#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libxml2/libxml/xmlmemory.h>
#include <libxml2/libxml/parser.h>
static char nodesXml[30][30] = {0};
int initXml()
{
int i = 0;
char line[200] = {0};
FILE *fp;//打开配置文件句柄
if((fp = fopen("xml.ini","r")) ==NULL)
{
fprintf(stderr, "open xml.ini error\n");
return -1;
}
while(fgets(line,200,fp)!=NULL)
{
Trim(line);
strcpy(nodesXml[i],line);
i++;
}
fclose(fp);
return 0;
}
int parseXML(char* pXml,int length)
{
int i = 0;
xmlDocPtr doc = xmlParseMemory(pXml, length);
xmlNodePtr cur = xmlDocGetRootElement(doc);
cur = cur->children;
while ( cur != NULL)
{
xmlChar* key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
printf("【%s = %s】\n",nodesXml[i],key);
xmlFree(key);
cur = cur->next;
i++;
}
}
分享到:
相关推荐
每个节点可以是元素、属性、文本等。 2. **xmlDocPtr**:代表整个XML文档,通常用于解析后的文档树根节点。 3. **xmlAttrPtr**:表示XML文档中的属性节点。 4. **xmlChar**:libxml2使用的一种字符类型,用于处理XML...
4. **提取数据**:对于每个子节点,提取其文本内容或属性值。 ```cpp #include #include <libxml/parser.h> int main(int argc, char *argv[]) { xmlDocPtr doc; // 解析文档指针 xmlNodePtr curNode; // 结点...
提到的"libxml2-2.9.4"是libxml2的一个特定版本,通常每个版本会修复已知问题,增加新功能,提升性能。例如,2.9.4可能包含了一些安全补丁,性能优化,以及对新XML标准的支持。 总结,libxml2是一个强大的XML处理库...
通常,你应该检查每个函数的返回值,并在发生错误时调用`xmlErrorLast`获取错误信息。 总的来说,libxml2库为Ubuntu下的C语言开发提供了强大的XML处理能力。通过理解和应用这些基本操作,你可以轻松地构建复杂的XML...
3. 解析XML元素:对于每个节点,可以使用`xmlNodeGetContent`获取元素文本,或者`xmlHasProp`检查属性是否存在。 4. 修改XML:如果需要,可以使用`xmlNewProp`添加属性,`xmlSetProp`修改属性,`xmlNewChild`添加子...
XML 文档由一系列元素构成,每个元素都有开始标记(如 `<files>`)和结束标记(如 `</files>`),并可以包含属性、文本和其他元素。XML 的主要特点包括:\n\n1. **自我描述性**:元素标签定义了数据的意义。\n2. **...
- 上述代码首先用`xmlReadMemory`加载XML数据,然后获取根元素,接着遍历XML树以处理每个节点。 4. **自定义NSUserDefault模拟** - `NSUserDefaults`是iOS系统提供的用于存储轻量级用户数据的类,但有时可能需要...
3. 对每个解析出的XML文件,根据其内容类型(比如sheet、styles等),解析相应的数据。 4. 解析到的数据可能包括工作表的行、列、单元格值,单元格的样式信息,以及可能的公式。 5. 将这些数据结构化,形成易于操作...
- **属性值**:每个 XML 元素可以有零个或多个属性,属性通常包含描述元素的额外信息。 - **元素值**:指元素内部的文本内容。 #### 2. 3级节点 这表明文档中将探讨如何处理具有三层嵌套结构的 XML 节点。例如,一...
- **代码示例**:针对每个功能提供的具体代码实现。 #### 三、数据类型 Libxml定义了一些关键数据类型来处理XML数据的存储和操作: - **xmlChar**:代表UTF-8编码中的一个字节。用于表示XML文档中的字符。 - **...
// 遍历节点集中的每个节点 for (int i = 0; i < xpathObj->nodesetval->nodeNr; i++) { xmlNodePtr node = xpathObj->nodesetval->nodeTab[i]; printf("Keyword content: %s\n", (char *)node->content); } } ...
DOM(Document Object Model)是XML文档的一种表示方式,它将XML文档转换为一棵由节点组成的树形结构,每个节点对应XML文档的一个部分。通过DOM,开发者可以方便地访问和修改XML文档的内容、结构和样式。常见的DOM...
你可以遍历这个数组来访问每个节点。 4. **查询节点**:使用`XPath`表达式,可以方便地找到XML文档中的特定节点。例如,`-[GDataXMLDocument nodeForXPath:error:]`方法允许你根据XPath查询返回一个匹配的节点。 5...
1. **XML节点(XML Node)**:每个XML文档都是由一系列节点构成的,如元素节点、属性节点、文本节点等。在C++类中,我们需要定义一个表示XML节点的数据结构,并提供相应的操作接口。 2. **XML文档(XML Document)*...
2. 使用循环遍历所有子节点,检查每个节点的名称,如果匹配到"storyinfo",则调用`parseStory`函数进行进一步处理。 3. 在`parseStory`函数内部,继续遍历子节点,查找"keyword"元素,然后使用`xmlNodeListGetString...
4. **遍历XML结构**:使用`xmlNodePtr`指针,我们可以遍历XML结构,访问每个节点的属性、子节点等。 5. **处理节点内容**:通过`xmlNodeGetContent()`函数可以获取节点的文本内容,`xmlHasProp()`可以检查节点是否...
2. **TiXmlElement**:表示XML文档中的元素,每个元素都有一个名字和可选的属性。元素可以包含文本内容、子元素和其他元素的混合体。TiXmlElement可以通过`FirstChildElement()`和`LastChildElement()`等方法来访问...
`xmlNode*`结构体代表XML中的一个节点,它包含了节点类型(元素、注释、处理指令等)、名字、属性等信息。我们可以用`xmlNodePtr`指针遍历子节点,调用`xmlNextSibling()`和`xmlChildElement()`等函数来移动到下一个...
- 可读取节点属性:这意味着程序能够获取XML元素上的自定义键值对,如`<element attr1="value1" attr2="value2">`。 - 最多解析两层:对于简单的XML结构,程序可以直接处理。如果需要处理更复杂的嵌套结构,可以...