⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faq.html

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
        files such as xmllint will be used instead of the normal system        ones).  To do this, the Bash command would be        <p><code>export PATH=/home/user/myxml/xmlinst/bin:$PATH</code></p>      </li>      <li>Now suppose you have a program <code>test1.c</code> that you would        like to compile with your "private" library.  Simply compile it using        the command        <p><code>gcc `xml2-config --cflags --libs` -o test test.c</code></p>        Note that, because your PATH has been set with <code>        /home/user/myxml/xmlinst/bin</code> at the beginning, the xml2-config        program which you just installed will be used instead of the system        default one, and this will <em>automatically</em> get the correct        libraries linked with your program.</li>    </ul></li>  <p></p>  <li><em>xmlDocDump() generates output on one line.</em>    <p>Libxml2 will not <strong>invent</strong> spaces in the content of a    document since <strong>all spaces in the content of a document are    significant</strong>. If you build a tree from the API and want    indentation:</p>    <ol><li>the correct way is to generate those yourself too.</li>      <li>the dangerous way is to ask libxml2 to add those blanks to your        content <strong>modifying the content of your document in the        process</strong>. The result may not be what you expect. There is        <strong>NO</strong> way to guarantee that such a modification won't        affect other parts of the content of your document. See <a href="http://xmlsoft.org/html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault        ()</a> and <a href="http://xmlsoft.org/html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile        ()</a></li>    </ol></li>  <p></p>  <li><em>Extra nodes in the document:</em>    <p><em>For an XML file as below:</em></p>    <pre>&lt;?xml version="1.0"?&gt;&lt;PLAN xmlns="http://www.argus.ca/autotest/1.0/"&gt;&lt;NODE CommFlag="0"/&gt;&lt;NODE CommFlag="1"/&gt;&lt;/PLAN&gt;</pre>    <p><em>after parsing it with the function    pxmlDoc=xmlParseFile(...);</em></p>    <p><em>I want to the get the content of the first node (node with the    CommFlag="0")</em></p>    <p><em>so I did it as following;</em></p>    <pre>xmlNodePtr pnode;pnode=pxmlDoc-&gt;children-&gt;children;</pre>    <p><em>but it does not work. If I change it to</em></p>    <pre>pnode=pxmlDoc-&gt;children-&gt;children-&gt;next;</pre>    <p><em>then it works.  Can someone explain it to me.</em></p>    <p></p>    <p>In XML all characters in the content of the document are significant    <strong>including blanks and formatting line breaks</strong>.</p>    <p>The extra nodes you are wondering about are just that, text nodes with    the formatting spaces which are part of the document but that people tend    to forget. There is a function <a href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault    ()</a>  to remove those at parse time, but that's an heuristic, and its    use should be limited to cases where you are certain there is no    mixed-content in the document.</p>  </li>  <li><em>I get compilation errors of existing code like when accessing    <strong>root</strong> or <strong>child fields</strong> of nodes.</em>    <p>You are compiling code developed for libxml version 1 and using a    libxml2 development environment. Either switch back to libxml v1 devel or    even better fix the code to compile with libxml2 (or both) by <a href="upgrade.html">following the instructions</a>.</p>  </li>  <li><em>I get compilation errors about non existing    <strong>xmlRootNode</strong> or <strong>xmlChildrenNode</strong>    fields.</em>    <p>The source code you are using has been <a href="upgrade.html">upgraded</a> to be able to compile with both libxml    and libxml2, but you need to install a more recent version:    libxml(-devel) &gt;= 1.8.8 or libxml2(-devel) &gt;= 2.1.0</p>  </li>  <li><em>XPath implementation looks seriously broken</em>    <p>XPath implementation prior to 2.3.0 was really incomplete. Upgrade to    a recent version, there are no known bugs in the current version.</p>  </li>  <li><em>The example provided in the web page does not compile.</em>    <p>It's hard to maintain the documentation in sync with the code    &lt;grin/&gt; ...</p>    <p>Check the previous points 1/ and 2/ raised before, and please send    patches.</p>  </li>  <li><em>Where can I get more examples and information than provided on the    web page?</em>    <p>Ideally a libxml2 book would be nice. I have no such plan ... But you    can:</p>    <ul><li>check more deeply the <a href="html/libxml-lib.html">existing        generated doc</a></li>      <li>have a look at <a href="examples/index.html">the set of        examples</a>.</li>      <li>look for examples of use for libxml2 function using the Gnome code.<!--        For example the following will query the full Gnome CVS base for the        use of the <strong>xmlAddChild()</strong> function:        <p><a        href="http://cvs.gnome.org/lxr/search?string=xmlAddChild">http://cvs.gnome.org/lxr/search?string=xmlAddChild</a></p>        <p>This may be slow, a large hardware donation to the gnome project        could cure this :-)</p>-->      </li>      <li><a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">Browse        the libxml2 source</a> , I try to write code as clean and documented        as possible, so looking at it may be helpful. In particular the code        of <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/xmllint.c?view=markup">xmllint.c</a> and of the various testXXX.c test programs should        provide good examples of how to do things with the library.</li>    </ul></li>  <p></p>  <li><em>What about C++ ?</em>    <p>libxml2 is written in pure C in order to allow easy reuse on a number    of platforms, including embedded systems. I don't intend to convert to    C++.</p>    <p>There is however a C++ wrapper which may fulfill your needs:</p>    <ul><li>by Ari Johnson &lt;ari@btigate.com&gt;:        <p>Website: <a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a></p>        <p>Download: <a href="http://sourceforge.net/project/showfiles.php?group_id=12999">http://sourceforge.net/project/showfiles.php?group_id=12999</a></p>      </li>      <!-- Website is currently unavailable as of 2003-08-02      <li>by Peter Jones &lt;pjones@pmade.org&gt;      <p>Website: <a      href="http://pmade.org/pjones/software/xmlwrapp/">http://pmade.org/pjones/software/xmlwrapp/</a></p>      </li>      -->    </ul></li>  <li><em>How to validate a document a posteriori ?</em>    <p>It is possible to validate documents which had not been validated at    initial parsing time or documents which have been built from scratch    using the API. Use the <a href="http://xmlsoft.org/html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd()</a>    function. It is also possible to simply add a DTD to an existing    document:</p>    <pre>xmlDocPtr doc; /* your existing document */xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */        dtd-&gt;name = xmlStrDup((xmlChar*)"root_name"); /* use the given root */        doc-&gt;intSubset = dtd;        if (doc-&gt;children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);        else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd);          </pre>  </li>  <li><em>So what is this funky "xmlChar" used all the time?</em>    <p>It is a null terminated sequence of utf-8 characters. And only utf-8!    You need to convert strings encoded in different ways to utf-8 before    passing them to the API.  This can be accomplished with the iconv library    for instance.</p>  </li>  <li>etc ...</li></ol><p></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>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -