linux 下,纯 c++使用 libxml2 读取 xml 文件
下载 libxml2
[url]p://p.xmlso.org/libxml2/libxml2-sources-2.7.1.tar.gz[/url]
常规方法进行安装
#tar xvzf libxml2-xxxx.tar.gz
#./con!gure
#make
#make install
把 libxml2 下的 libxml 拷贝一份到 libxml2 所在的目录
#cp /usr/include/libxml2/libxml /usr/include/libxml
这一步不是必需的,但是在笔者的机器上不这样做就不行,编译的时候想
g++ a.cpp -llibxml2 -o a 这样指定一下发现 parser.h 但是发现 parser.h 里面
定义的库全是 include<libxml/parser.h>.而 parser.h 的实际位置是在<libxml2\
libxml/parser.h>,没办法了,但是这样拷贝一下就好了
现在要说一下 xml 文件了,笔者要读取了 xml 有两种格式,一种
<root>
<node1>aaaaa</node1>
<node2>bbbbb</node2>
</root>
一种
<root>
<node1 a="10">aaaaa</node1>
<node2 b="20">bbbbb</node2>
</root>
整理一下,本文要读取的 d.xml 为
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<node1 a="10">aaaaa</node1>
<node2 b="20">bbbbb</node2>
</root>
目的为取出其它的 b 的值和 node2 的属性值
OK,开工
#include <iostream>
#include <libxml/parser.h>
int main(int argc, char *argv[])
{
xmlDocPtr doc; //定义解析文档指针
xmlNodePtr curNode; //定义结点指针(你需要它为了在各个结点间移动)
xmlChar *szKey; //临时字符串变量