一个xml的问题(我发现开始搞的人碰到这个问题的也挺多)

By | 09月30日
Advertisement

下载libxml2:

官方网站,下载适合自己版本的源码包。

http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-devel

我下载的是:

libxml2-devel-2.9.1-5.1.i586.rpm

用命令解压:

rpm2cpio libxml2-devel-2.9.1-5.1.i586.rpm |cpio –div

这条命令太神了,之后没有用make该有的就都有了。

[email protected]:~/libxml$ rpm2cpiolibxml2-devel-2.9.1-5.1.i586.rpm | cpio -div

[email protected]:~/libxml$

[email protected]:~/libxml$ cd usr

[email protected]:~/libxml/usr$ ls

bin include lib share

[email protected]:~/libxml/usr$

后来胡乱在网上找了一段源码,想编译下试试,结果报头文件找不到。

In file included from test1.c:2:0:

libxml/parser.h:15:31: fatal error:libxml/xmlversion.h: No such file or directory

compilation terminated.

我以为是安装有问题,又装了一遍:


sudo apt-get install libxml2-dev libxslt1-dev

还是不成,毛关系没有。

省略一万字,反正我研究了两个小时~~一个xml的问题(我发现开始搞的人碰到这个问题的也挺多)

后来发现加两个编译选项就好了~~一个xml的问题(我发现开始搞的人碰到这个问题的也挺多)

[email protected]:~/xmltest/usr/include$ g++test1.c -I/home/liuguili/xmltest/usr/include/libxml2/ -L/home/liuguili/xmltest/usr/lib -lxml2 -o testxml

[email protected]:~/xmltest/usr/include$ ./testxml

bbbbb

20

谢谢热情的大神~~一个xml的问题(我发现开始搞的人碰到这个问题的也挺多)

附上在网上找的一段源码

#include <iostream>
#include <libxml/parser.h>
int main(int argc, char *argv[])
{
xmlDocPtrdoc; //定义解析文档指针
xmlNodePtrcurNode; //定义结点指针(你需要它为了在各个结点间移动)
xmlChar*szKey; //临时字符串变量
char szDocName[] ="d.xml";
using std::string;
using std::cout;
using std::endl;

doc =xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析文件
//检查解析文档是否成功,如果不成功,libxml将指一个注册的错误并停止。
//一个常见错误是不适当的编码。XML标准文档除了用UTF-8或UTF-16外还可用其它编码保存。
//如果文档是这样,libxml将自动地为你转换到UTF-8。更多关于XML编码信息包含在XML标准中.
if (NULL == doc)
{
//文档打开错误
return -1;
}
curNode =xmlDocGetRootElement(doc); //确定文档根元素
/*检查确认当前文档中包含内容*/
if (NULL == curNode)
{
//空得xml文件
xmlFreeDoc(doc);
return -2;
}
/*在这个例子中,我们需要确认文档是正确的类型。“root”是在这个示例中使用文档的根类型。*/
if (xmlStrcmp(curNode->name,BAD_CAST "root"))
{
//分析根元素失败
xmlFreeDoc(doc);
return -3;
}
curNode =curNode->xmlChildrenNode;
xmlNodePtr propNodePtr =curNode;
while(curNode != NULL)
{
//取出节点中的内容
if((!xmlStrcmp(curNode->name, (const xmlChar *)"node2")))
{
szKey = xmlNodeGetContent(curNode);
cout << szKey << endl; //得到node2的值并输出
xmlFree(szKey);
}
//查找带有属性attribute的节点
if(xmlHasProp(curNode,BAD_CAST "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; //找到b的属性并输出
xmlFree(szAttr);
}
attrPtr =attrPtr->next;
}
xmlFreeDoc(doc);
return 0;
}

本文要读取的d.xml为
<?xml version="1.0"encoding="UTF-8" ?>
<root>
<node1 a="10">aaaaa</node1>
<node2 b="20">bbbbb</node2>

</root>

Similar Posts:

  • xml解析2:使用递归解析给定的任意一个xml文档并且将其内容输出到命令行上

    使用递归解析给定的任意一个xml文档并且将其内容输出到命令行 综合 解析根元素节点,各孩子属性值,并输出 package ytu.botao.xml.dom; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.Parse

  • 使用wxWidgets中的wxXmlDocument来对一个xml文件操作

    如何操作一个XML,使用wxWidgets ? 可以使用一下方法: wxXmlDocument doc; wxString str_filename =file; if(false == doc.Load(str_filename)) { return; } wxXmlNode* root = doc.GetRoot(); wxXmlNode* child_root = root->GetChildren(); while(child_root) { if (child_root->GetNa

  • 使用 JDOM 编写一个 XML 文档(一)

    JDOM是专门用于Java读取 XML 文档的一种技术,记住这个技术只能读取 XML 文档, 并且需要第三方jar包!在下面提供 package com.syh.xml.jdom; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.jdom.Attribute; import org.jdom.Comment; import o

  • 请介绍一个xml,bean互转

    请介绍一个xml,bean互转:http://www.iteye.com/topic/1113694

  • android面试题总结02 在android中本地写入一个xml文件

    上次去面试一家做framework层的公司,问到了很多java基础,还有怎么在android本地用java写一个xml. 然后想了半天想起来看黑马视频里学过XmlSerializer这个xml序列化工具,然后我就回答有个XML序列化工具,然后里面有setTag方法(这个其实应该是startTag) 反正就是回答的很不清楚,然后面试官说可以理解,毕竟这个不常用,我知道你知道,用过就行了,就这样过了.后来回来查了一下源码,具体在android中写一个 xml文件代码如下: XmlSerializer

  • 写的一个XML操作类,包括读取/插入/修改/删除。

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.Ht

  • XML的DOM解析 Java实现 使用递归解析一个XML文档

    XML的DOM解析 Java实现 使用递归解析一个XML文档 本文是一个练习程序,程序解析了一个XML文档,并将其原样输出在命令行上. 因为要把程序设计成适用于任何XML文档,所以需要使用递归,其中还必须加入元素类型的判断. 详见程序: 本文使用的XML文档: <?xml version="1.0" encoding="UTF-8"?> <学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

  • 把数组转化成一个xml字符串--php

    一:代码: <?php //************************test*************************** $vararray = array( "name" => array("alen", "andy", "tom"), "cuntry" => array("china","japan","english

  • 1.在Activity里怎样获得另一个xml布局文件的控件

    LayoutInflater factorys = LayoutInflater.from(当前类.this); final View textEntryView = factorys.inflate(R.layout.你要获取的另一个XML, null); TextView y_type = (TextView) textEntryView.findViewById(R.id.控件ID);

  • 对一个xml编写xsd的实例

    有坛中兄弟给我发了一个xml,须写xsd验证,这方面我也是新手呢,不过看了http://www.w3school.com.cn/schema/index.asp的教程而已,所以这倒是我第一次写xsd了. 给定xml (project_4.xml)文件如下: <UWO> <Departments> <Department> <Name>Economics</Name> <Address>Social Science Centre, UW

Tags: