TinyXML

TinyXML是一个优秀的C++ XML解析器。TinyXML http://sourceforge.net/projects/tinyxml

使用方法

生成一个简单的xml文件

<?xml version="1.0" ?>
<Hello>World</Hello>
#include <iostream>
#include <tinyxml.h>
using namespace std;

int main()
{
	TiXmlDocument doc;

	TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
	doc.LinkEndChild( decl );

	TiXmlElement * element = new TiXmlElement( "Hello" );
	doc.LinkEndChild( element );

	TiXmlText * text = new TiXmlText( "World" );
	element->LinkEndChild( text );

	doc.SaveFile( "madeByHand.xml" );

	return 0;
}

打开文件遍历元素

example4.xml

<?xml version="1.0" ?>
<MyApp>
	<!-- Settings for MyApp -->
	<Messages>
		<Welcome>Welcome to MyApp</Welcome>
		<Farewell>Thank you for using MyApp</Farewell>
	</Messages>
	<Windows>
		<Window name="MainFrame" x="5" y="15" w="400" h="250" />
	</Windows>
	<Connection ip="192.168.0.1" timeout="123.456000" />
</MyApp>
void IterateXmlNode()
{
	TiXmlDocument doc("example4.xml");
	if (!doc.LoadFile())
		return;

	TiXmlElement* root = doc.FirstChildElement();
	if (root == nullptr)
		return;

	TiXmlElement* messages = root->FirstChildElement("Messages");
	if (messages == nullptr)
		return;

	TiXmlNode* message = nullptr;
	for (message = messages->FirstChild(); message; message = message->NextSibling())
	{
		if (message->Type() == TiXmlNode::TINYXML_ELEMENT)
		{
			cout << message->Value() << ": ";
			TiXmlNode* text = message->FirstChild();
			if (text)
				cout << text->Value() << endl;
		}
	}

// 	TiXmlNode* message = nullptr;
// 	while (message = messages->IterateChildren(message))
// 	{
// 		if (message->Type() == TiXmlNode::TINYXML_ELEMENT)
// 		{
// 			cout << message->Value() << ": ";
// 			TiXmlNode* text = message->FirstChild();
// 			if (text)
// 				cout << text->Value() << endl;
// 		}
// 	}
}

上面一段代码中,注释部分演示了另外一种遍历方法。

使用TiXmlHandle

通过上面的代码我们看到,获得一个元素后需要判断是否为空指针。使用TiXmlHandle可以简化编程,使用链式调用的简便语法,效果如下:

void UsingTiXmlHandle()
{
	TiXmlDocument doc("example4.xml");
	if (!doc.LoadFile())
		return;

	TiXmlHandle root(&doc);
	TiXmlText* text = root.FirstChild("MyApp").FirstChild("Messages").FirstChild().FirstChild().ToText();
	if (text)
		cout << text->Value() << endl;
}

总结

TinyXML的使用方法还是相当简单的。源代码只有6个文件,看一下头文件,各种接口一目了然。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值