libxml2
来源:互联网 发布:流光软件有毒吗 编辑:程序博客网 时间:2024/04/29 22:04
测试使用版本为libxml2-2.7.3.tar.gz ,网上即可下载到。
一. 安装
1. 解压
2. ./configure
3. make
4. make install
安装完成后, 会在当前路径下, 有个目录 .libs , 里面有libxml2.a libxml2.so 等。
头文件和lib 默认安装路径为 /usr/include/libxml2/libxml/ /usr/lib64/
或 /usr/local/include/libxml2/libxml /usr/local/lib64
二. 使用
1. 如何正确安装,写demo时直接包含头文件 #include<libxml/parser.h> 等即可
自己使用时,由于机器权限问题, make 成功,但是make install 失败, 未能正确安装
但只要make 成功,.a .so 都已生成, 所以可以直接使用, 即方法2
2. make 成功后, 在libxml2-2.7.3/include/libxml 下包含了所有的头文件, libxml2-2.7.3/.libs 下包含了所有的.a 和 .so 库文件
a. test.xml 示例, 目的取出W 的值和 它的属性
b. demo.cpp
#include <libxml/parser.h>#include <iostream>using namespace std;int main(){ xmlDocPtr doc; //定义解析文档的指针 xmlNodePtr curNode; //定义节点指针 xmlChar *szKey; //临时字符串变量 char szDocName[] = "test.xml"; //指定要解析的xml文档 doc = xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析读取xml文档 if (NULL == doc) { cout << "open test.xml fail" <<endl; return -1; } curNode = xmlDocGetRootElement(doc); //获取xml文档的根节点(元素) if (NULL == curNode) { xmlFreeDoc(doc); cout << "test.xml is empty" <<endl; return -2; } if (xmlStrcmp(curNode->name, BAD_CAST "root")) //检查根节点是否正确 { xmlFreeDoc(doc); cout << "root is wrong" <<endl; return -3; } curNode = curNode->xmlChildrenNode; //获取根节点的子节点 xmlNodePtr propNodePtr = curNode; while(curNode != NULL) { if ((!xmlStrcmp(curNode->name, (const xmlChar *)"W"))) { szKey = xmlNodeGetContent(curNode); // 获取该节点的内容 cout << szKey << endl; xmlFree(szKey); } if (xmlHasProp(curNode,BAD_CAST "b")) //查找带有属性b的节点 { propNodePtr = curNode; } curNode = curNode->next; } xmlAttrPtr attrPtr = propNodePtr->properties; while (attrPtr != NULL) { if (!xmlStrcmp(attrPtr->name, BAD_CAST "b")) //检查属性名 { xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST "b"); //获取属性 cout << szAttr << endl; xmlFree(szAttr); } attrPtr = attrPtr->next; } xmlFreeDoc(doc); return 0;}
c. 编译
g++ -o demo demo.cpp -I/usr/include/libxml2/ -L/usr/lib64/ -lxml2
或 g++ -o demo demo.cpp -I./include/ -L./.libs -lxml2
d. 输出
width
20
- libxml2
- libxml2
- libxml2
- libxml2
- libxml2
- libxml2
- libxml2
- Libxml2
- libxml2
- libxml2
- using libxml2
- Using Libxml2
- Libxml2使用指南
- Libxml2使用指南
- libxml2使用
- libxml2 安装
- libxml2笔记
- libxml2使用说明
- iOS开发ASIHttpRequest发送数据
- API to CREATE FND User
- yum 出现Existing lock /var/run/yum.pid: another copy is running as pid:1182
- idr - integer ID management
- 高效率,慢生活
- libxml2
- SQL Server 复制需要有实际的服务器名称才能连接到服务器
- Java技术分享:tomcat的work目录作用
- 基于单幅图像的深度估计
- iOS开发ASIHTTPRequest进度追踪
- Animation Timing
- document.compatMode属性
- 代码库
- API to UPDATE Oracle FND User