tinyxml 读取文本节点_TinyXML读取xml文件

本文介绍了如何使用TinyXML库解析XML文件,包括读取字符串属性、整型属性及文本内容,并强调了XML中文编码转换的重要性,同时对比了TiXmlDocument与TiXmlHandle在处理不存在节点时的区别。
摘要由CSDN通过智能技术生成

TinyXML读取xml文件

2020-05-19

编程之家收集整理的这篇文章主要介绍了TinyXML读取xml文件,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

例子 xml 内容: <?xml version="1.0" encoding="UTF-8" ?> 电视剧电影

以下为示例代码,buffer 中保存着上面例子的 xml 内容:

voidCxmlDlg::ParseXML()

{

char*buffer="<?xmlversion =\"1.0\"encoding=\"UTF-8\"?>\

\

\

\

电视剧\

电影\

\

";

charutf8[256]={0};

if(MBSToUTF8(utf8,sizeof(utf8),buffer)<=0)//此函数见我之前关于TinyXML的文章

return;

TiXmlDocumentdoc;

doc.Parse(utf8);

TiXmlElement*databaseElement=0;

TiXmlElement*listElement=0;

TiXmlElement*channelElement=0;

TiXmlHandledocHandle(&doc);

databaseElement=docHandle.FirstChild("Config").FirstChild("Database").ToElement();

assert(databaseElement);

//取得字符串属性的内容

constchar*ip=databaseElement->Attribute("ip");

//取得整型属性的值

intport=0;

databaseElement->QueryIntAttribute("port",&port);

intcount=0;

charcontent[32]={0};

listElement=docHandle.FirstChild("Config").FirstChild("List").ToElement();

assert(listElement);

for(channelElement=listElement->FirstChildElement("Channel");channelElement;channelElement=channelElement->NextSiblingElement("Channel"))

{

channelElement->QueryIntAttribute("count",&count);

UTF8ToMBS(content,sizeof(content),channelElement->GetText());

}

}

注意:

1) xml 内容中如果有中文,必须转成 UTF-8格式,否则可能会出问题,比如此例中,"电视剧"的中文 gb2312 编码会影响到后面的 "",导致取这个节点的 text 时,得到的结果是: "电视剧",而取下一个节点时将找不到节点。

2)使用 TiXmlDocument 与 TiXmlHandle 的区别: 一次取多级子节点元素时,当某一级节点不存在,用 doc (TiXmlDocument) 会出现异常,程序崩溃,而用 docHandle (TiXmlHandle) 则不会有异常。 比如: databaseElement = doc.FirstChildElement( "Conf" )->FirstChildElement( "Database" ); // 异常,崩溃 databaseElement = docHandle.FirstChild( "Conf" ).FirstChild( "Database" ).ToElement(); // 不会异常,databaseElement 为 0 databaseElement = docHandle.FirstChildElement( "Conf" ).FirstChildElement( "Database" ).ToElement(); // 不会异常,databaseElement 为 0 后两种写法的效果是一样的。

总结

以上是编程之家为你收集整理的TinyXML读取xml文件全部内容,希望文章能够帮你解决TinyXML读取xml文件所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值