Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的XML API?_C_Xml_Api - Fatal编程技术网

C中的XML API?

C中的XML API?,c,xml,api,C,Xml,Api,它们都这么复杂吗 只需要一些基本的东西就可以用C生成XML。众所周知很简单,试一试如果您需要一些简单、易用的C: MiniXML是一个小型XML库,它 您可以使用来读写XML和 数据库中类似XML的数据文件 无需大容量的应用程序 非标准图书馆。仅限迷你XML 需要与ANSI C兼容的编译器 (GCC起作用,大多数供应商的ANSI C也是如此 编译器)和“生成”程序 然而,在复杂性和需求方面存在一系列问题。MiniXML很好,因为它只需要一个简单的Ansi C编译器。其中很多都需要其他库或特定的

它们都这么复杂吗

只需要一些基本的东西就可以用C生成XML。

众所周知很简单,试一试如果您需要一些简单、易用的C:

MiniXML是一个小型XML库,它 您可以使用来读写XML和 数据库中类似XML的数据文件 无需大容量的应用程序 非标准图书馆。仅限迷你XML 需要与ANSI C兼容的编译器 (GCC起作用,大多数供应商的ANSI C也是如此 编译器)和“生成”程序

然而,在复杂性和需求方面存在一系列问题。MiniXML很好,因为它只需要一个简单的Ansi C编译器。其中很多都需要其他库或特定的编译器


-Adam

在C中生成XML的最简单方法是Tim Bray提供的高质量免费genx:

  • Gnome是一个扩展的XML C API
  • 是libxml2之上的一个很好的C库
    • 我喜欢。以下是一个使用示例:

      #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);
      
      }
      
      #包括
      int
      主(空)
      {
      xmlNodePtr根,节点;
      xmlDocPtr文件;
      xmlChar*xmlbuff;
      int缓冲区大小;
      /*创建文档*/
      doc=xmlNewDoc(BAD_CAST“1.0”);
      root=xmlNewNode(NULL,错误的“root”);
      /*创建一些节点*/
      node=xmlNewChild(根,NULL,错误的“节点”,NULL);
      node=xmlNewChild(node,NULL,内部错误转换,NULL);
      node=xmlNewChild(root,NULL,错误的“othernode”,NULL);
      /*将内容放入节点:注意,有特殊字符,因此
      编码是必要的*/
      xmlNodeSetContent(节点,
      xmlEncodeSpecialChars(文档、坏演员“文本内容和”);
      xmlDocSetRootElement(doc,root);
      /*将文档转储到缓冲区并打印以供演示*/
      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>
      
      %./createxml
      文康及;帐篷和标签
      

      关于一个真实的例子,请参见。

      Tommy,请提出一个新的问题,而不是改变这个问题。是的,但事实上,我太跛脚了,不知道如何使用链接,这不应该妨碍我研究这两个库。他们都很好。