✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server.blackpussy.asia ​🇻​♯➤ 5.14.0-611.20.1.el9_7.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 163.245.207.76 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.243
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗞 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ mail,mb_send_mail
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /usr/share/doc/libxml2-devel//example.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>A real example</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>A real example</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="https://libxmlplusplus.github.io/libxmlplusplus/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="https://gitlab.gnome.org/GNOME/libxml2/issues">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Here is a real size example, where the actual content of the application
data is not kept in the DOM tree but uses internal structures. It is based on
a proposal to keep a database of jobs related to Gnome, with an XML based
storage structure. Here is an <a href="gjobs.xml">XML encoded jobs
base</a>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;gjob:Helping xmlns:gjob="http://www.gnome.org/some-location"&gt;
  &lt;gjob:Jobs&gt;

    &lt;gjob:Job&gt;
      &lt;gjob:Project ID="3"/&gt;
      &lt;gjob:Application&gt;GBackup&lt;/gjob:Application&gt;
      &lt;gjob:Category&gt;Development&lt;/gjob:Category&gt;

      &lt;gjob:Update&gt;
        &lt;gjob:Status&gt;Open&lt;/gjob:Status&gt;
        &lt;gjob:Modified&gt;Mon, 07 Jun 1999 20:27:45 -0400 MET DST&lt;/gjob:Modified&gt;
        &lt;gjob:Salary&gt;USD 0.00&lt;/gjob:Salary&gt;
      &lt;/gjob:Update&gt;

      &lt;gjob:Developers&gt;
        &lt;gjob:Developer&gt;
        &lt;/gjob:Developer&gt;
      &lt;/gjob:Developers&gt;

      &lt;gjob:Contact&gt;
        &lt;gjob:Person&gt;Nathan Clemons&lt;/gjob:Person&gt;
        &lt;gjob:Email&gt;nathan@windsofstorm.net&lt;/gjob:Email&gt;
        &lt;gjob:Company&gt;
        &lt;/gjob:Company&gt;
        &lt;gjob:Organisation&gt;
        &lt;/gjob:Organisation&gt;
        &lt;gjob:Webpage&gt;
        &lt;/gjob:Webpage&gt;
        &lt;gjob:Snailmail&gt;
        &lt;/gjob:Snailmail&gt;
        &lt;gjob:Phone&gt;
        &lt;/gjob:Phone&gt;
      &lt;/gjob:Contact&gt;

      &lt;gjob:Requirements&gt;
      The program should be released as free software, under the GPL.
      &lt;/gjob:Requirements&gt;

      &lt;gjob:Skills&gt;
      &lt;/gjob:Skills&gt;

      &lt;gjob:Details&gt;
      A GNOME based system that will allow a superuser to configure 
      compressed and uncompressed files and/or file systems to be backed 
      up with a supported media in the system.  This should be able to 
      perform via find commands generating a list of files that are passed 
      to tar, dd, cpio, cp, gzip, etc., to be directed to the tape machine 
      or via operations performed on the filesystem itself. Email 
      notification and GUI status display very important.
      &lt;/gjob:Details&gt;

    &lt;/gjob:Job&gt;

  &lt;/gjob:Jobs&gt;
&lt;/gjob:Helping&gt;</pre><p>While loading the XML file into an internal DOM tree is a matter of
calling only a couple of functions, browsing the tree to gather the data and
generate the internal structures is harder, and more error prone.</p><p>The suggested principle is to be tolerant with respect to the input
structure. For example, the ordering of the attributes is not significant,
the XML specification is clear about it. It's also usually a good idea not to
depend on the order of the children of a given node, unless it really makes
things harder. Here is some code to parse the information for a person:</p><pre>/*
 * A person record
 */
typedef struct person {
    char *name;
    char *email;
    char *company;
    char *organisation;
    char *smail;
    char *webPage;
    char *phone;
} person, *personPtr;

/*
 * And the code needed to parse it
 */
personPtr parsePerson(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) {
    personPtr ret = NULL;

DEBUG("parsePerson\n");
    /*
     * allocate the struct
     */
    ret = (personPtr) malloc(sizeof(person));
    if (ret == NULL) {
        fprintf(stderr,"out of memory\n");
        return(NULL);
    }
    memset(ret, 0, sizeof(person));

    /* We don't care what the top level element name is */
    cur = cur-&gt;xmlChildrenNode;
    while (cur != NULL) {
        if ((!strcmp(cur-&gt;name, "Person")) &amp;&amp; (cur-&gt;ns == ns))
            ret-&gt;name = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
        if ((!strcmp(cur-&gt;name, "Email")) &amp;&amp; (cur-&gt;ns == ns))
            ret-&gt;email = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
        cur = cur-&gt;next;
    }

    return(ret);
}</pre><p>Here are a couple of things to notice:</p><ul>
  <li>Usually a recursive parsing style is the more convenient one: XML data
    is by nature subject to repetitive constructs and usually exhibits highly
    structured patterns.</li>
  <li>The two arguments of type <em>xmlDocPtr</em> and <em>xmlNsPtr</em>,
    i.e. the pointer to the global XML document and the namespace reserved to
    the application. Document wide information are needed for example to
    decode entities and it's a good coding practice to define a namespace for
    your application set of data and test that the element and attributes
    you're analyzing actually pertains to your application space. This is
    done by a simple equality test (cur-&gt;ns == ns).</li>
  <li>To retrieve text and attributes value, you can use the function
    <em>xmlNodeListGetString</em> to gather all the text and entity reference
    nodes generated by the DOM output and produce an single text string.</li>
</ul><p>Here is another piece of code used to parse another level of the
structure:</p><pre>#include &lt;libxml/tree.h&gt;
/*
 * a Description for a Job
 */
typedef struct job {
    char *projectID;
    char *application;
    char *category;
    personPtr contact;
    int nbDevelopers;
    personPtr developers[100]; /* using dynamic alloc is left as an exercise */
} job, *jobPtr;

/*
 * And the code needed to parse it
 */
jobPtr parseJob(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) {
    jobPtr ret = NULL;

DEBUG("parseJob\n");
    /*
     * allocate the struct
     */
    ret = (jobPtr) malloc(sizeof(job));
    if (ret == NULL) {
        fprintf(stderr,"out of memory\n");
        return(NULL);
    }
    memset(ret, 0, sizeof(job));

    /* We don't care what the top level element name is */
    cur = cur-&gt;xmlChildrenNode;
    while (cur != NULL) {
        
        if ((!strcmp(cur-&gt;name, "Project")) &amp;&amp; (cur-&gt;ns == ns)) {
            ret-&gt;projectID = xmlGetProp(cur, "ID");
            if (ret-&gt;projectID == NULL) {
                fprintf(stderr, "Project has no ID\n");
            }
        }
        if ((!strcmp(cur-&gt;name, "Application")) &amp;&amp; (cur-&gt;ns == ns))
            ret-&gt;application = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
        if ((!strcmp(cur-&gt;name, "Category")) &amp;&amp; (cur-&gt;ns == ns))
            ret-&gt;category = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
        if ((!strcmp(cur-&gt;name, "Contact")) &amp;&amp; (cur-&gt;ns == ns))
            ret-&gt;contact = parsePerson(doc, ns, cur);
        cur = cur-&gt;next;
    }

    return(ret);
}</pre><p>Once you are used to it, writing this kind of code is quite simple, but
boring. Ultimately, it could be possible to write stubbers taking either C
data structure definitions, a set of XML examples or an XML DTD and produce
the code needed to import and export the content between C data and XML
storage. This is left as an exercise to the reader :-)</p><p>Feel free to use <a href="example/gjobread.c">the code for the full C
parsing example</a> as a template, it is also available with Makefile in the
Gnome SVN base under libxml2/example</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
22 Aug 2026 4.57 AM
root / root
0755
examples
--
1 Sep 2026 4.57 AM
root / root
0755
html
--
1 Sep 2026 4.57 AM
root / root
0755
tutorial
--
1 Sep 2026 4.57 AM
root / root
0755
APIchunk0.html
29.427 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk1.html
36.489 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk10.html
62.725 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk11.html
31.885 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk12.html
85.548 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk13.html
60.372 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk14.html
44.521 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk15.html
43.243 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk16.html
35.443 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk17.html
47.261 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk18.html
41.937 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk19.html
35.713 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk2.html
39.811 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk20.html
32.051 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk21.html
36.692 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk22.html
56.297 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk23.html
62.358 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk24.html
91.829 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk25.html
40.265 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk26.html
30.105 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk27.html
32.989 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk28.html
56.875 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk29.html
13.169 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk3.html
35.264 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk4.html
35.355 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk5.html
29.066 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk6.html
28.527 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk7.html
32.086 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk8.html
29.587 KB
19 Feb 2022 6.26 PM
root / root
0644
APIchunk9.html
28.027 KB
19 Feb 2022 6.26 PM
root / root
0644
APIconstructors.html
58.107 KB
19 Feb 2022 6.26 PM
root / root
0644
APIfiles.html
321.15 KB
19 Feb 2022 6.26 PM
root / root
0644
APIfunctions.html
212.15 KB
19 Feb 2022 6.26 PM
root / root
0644
APIsymbols.html
318.455 KB
19 Feb 2022 6.26 PM
root / root
0644
DOM.gif
3.092 KB
17 Jan 2022 9.56 PM
root / root
0644
DOM.html
6.464 KB
19 Feb 2022 6.26 PM
root / root
0644
FAQ.html
20.643 KB
19 Feb 2022 6.26 PM
root / root
0644
Libxml2-Logo-180x168.gif
8.003 KB
17 Jan 2022 9.56 PM
root / root
0644
Libxml2-Logo-90x34.gif
2.998 KB
17 Jan 2022 9.56 PM
root / root
0644
XMLinfo.html
6.64 KB
19 Feb 2022 6.26 PM
root / root
0644
XSLT.html
5.642 KB
19 Feb 2022 6.26 PM
root / root
0644
architecture.html
6.704 KB
19 Feb 2022 6.26 PM
root / root
0644
bugs.html
9.995 KB
19 Feb 2022 6.26 PM
root / root
0644
catalog.gif
5.962 KB
17 Jan 2022 9.56 PM
root / root
0644
catalog.html
23.094 KB
19 Feb 2022 6.26 PM
root / root
0644
contribs.html
7.5 KB
19 Feb 2022 6.26 PM
root / root
0644
docs.html
7.448 KB
19 Feb 2022 6.26 PM
root / root
0644
downloads.html
8.096 KB
19 Feb 2022 6.26 PM
root / root
0644
encoding.html
18.961 KB
19 Feb 2022 6.26 PM
root / root
0644
entities.html
9.224 KB
19 Feb 2022 6.26 PM
root / root
0644
example.html
12.8 KB
19 Feb 2022 6.26 PM
root / root
0644
guidelines.html
17.247 KB
17 Jan 2022 9.56 PM
root / root
0644
help.html
6.167 KB
19 Feb 2022 6.26 PM
root / root
0644
index.html
10.421 KB
19 Feb 2022 6.26 PM
root / root
0644
interface.html
8.021 KB
19 Feb 2022 6.26 PM
root / root
0644
intro.html
7.04 KB
19 Feb 2022 6.26 PM
root / root
0644
library.html
14.646 KB
19 Feb 2022 6.26 PM
root / root
0644
libxml.gif
7.512 KB
17 Jan 2022 9.56 PM
root / root
0644
libxml2-api.xml.gz
158.116 KB
31 Aug 2026 10.12 AM
root / root
0644
namespaces.html
8.144 KB
19 Feb 2022 6.26 PM
root / root
0644
news.html
199.008 KB
19 Feb 2022 6.26 PM
root / root
0644
python.html
19.439 KB
19 Feb 2022 6.26 PM
root / root
0644
redhat.gif
0.681 KB
17 Jan 2022 9.56 PM
root / root
0644
searches.html
7.382 KB
17 Jan 2022 9.56 PM
root / root
0644
smallfootonly.gif
2.707 KB
17 Jan 2022 9.56 PM
root / root
0644
structure.gif
5.429 KB
17 Jan 2022 9.56 PM
root / root
0644
threads.html
6.948 KB
19 Feb 2022 6.26 PM
root / root
0644
tree.html
7.728 KB
19 Feb 2022 6.26 PM
root / root
0644
upgrade.html
12.37 KB
19 Feb 2022 6.26 PM
root / root
0644
w3c.png
1.98 KB
17 Jan 2022 9.56 PM
root / root
0644
xml.html
336.801 KB
19 Feb 2022 6.26 PM
root / root
0644
xmlcatalog_man.html
13.742 KB
19 Feb 2022 6.26 PM
root / root
0644
xmldtd.html
13.327 KB
19 Feb 2022 6.26 PM
root / root
0644
xmlio.html
12.497 KB
19 Feb 2022 6.26 PM
root / root
0644
xmllint.html
22.765 KB
19 Feb 2022 6.26 PM
root / root
0644
xmlmem.html
14.104 KB
19 Feb 2022 6.26 PM
root / root
0644
xmlreader.html
19.666 KB
17 Jan 2022 9.56 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF