C语言中的XML API有哪些?

4

Tommy,请提出一个新问题,而不是更改此问题。 - Adam Davis
5个回答

7

我喜欢使用libxml。这是一个使用示例:

#include <libxml/parser.h>

int
main(void)
{

  xmlNodePtr root, node;
  xmlDocPtr doc;
  xmlChar *xmlbuff;
  int buffersize;

  /* Create the document. */
  doc = xmlNewDoc(BAD_CAST "1.0");
  root = xmlNewNode(NULL, BAD_CAST "root");

  /* Create some nodes */
  node = xmlNewChild(root, NULL, BAD_CAST "node", NULL);
  node = xmlNewChild(node, NULL, BAD_CAST "inside", NULL);
  node = xmlNewChild(root, NULL, BAD_CAST "othernode", NULL);

  /* Put content in a node: note there are special characters so 
     encoding is necessary! */
  xmlNodeSetContent(node, 
                xmlEncodeSpecialChars(doc, BAD_CAST "text con&tent and <tag>"));

  xmlDocSetRootElement(doc, root);

  /* Dump the document to a buffer and print it for demonstration purposes. */
  xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);
  printf((char *) xmlbuff);

}

使用“gcc -Wall -I/usr/include/libxml2 -c create-xml.c && gcc -lxml2 -o create-xml create-xml.o”编译的程序将显示以下内容:

% ./create-xml   
<?xml version="1.0"?>
<root>
  <node>
    <inside/>
  </node>
  <othernode>text con&amp;tent and &lt;tag&gt;</othernode>
</root>

如果需要一个真实的例子,可以查看我实现的RFC 5388


4

Xerces 被认为是易用的,你可以试一试。


3
如果您需要简单、易用且基于C语言的解决方案,MiniXML可能是您要找的。

Mini-XML:轻量级XML库

MiniXML是一个小型XML库,您可以在应用程序中使用它来读取和写入XML和类XML数据文件,而无需使用大型非标准库。MiniXML只需要一个ANSI C兼容编译器(GCC可用,大多数供应商的ANSI C编译器也可用)和一个'make'程序。

然而,有许多XML C库可供选择,其复杂度和需求也不同。 MiniXML很好,因为它不需要更多的简单Ansi C编译器。 许多其他库需要使用其他库或特定的编译器。

-Adam


1

1

是的,但我太蠢了,不会使用链接,这事实不应妨碍你研究这两个库。它们都相当不错。 - Crowley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接