返回首页
当前位置: 主页 > 编程语言 > XML教程 >

短小精悍的xml读写器-tinyxml

时间:2017-05-24 22:47来源:电脑教程学习网 www.etwiki.cn 编辑:admin

不用使用MS的大型的COM组建去读写xml,有了这个东西,其实就是很小的几个文件,可以方便的读写xml,因为不依赖windows的东西,所以你就可以很方便的把它搬到linux下面了。

下面是我写的简单读写xml的片段代码:

TiXmlDocument doc( pFile );
bool bLoad = doc.LoadFile();
if ( !bLoad )
{
Print( “failed to load file” );
return;
}
doc.Print( stdout );

// read
TiXmlHandle hDoc(&doc);
TiXmlNode *pNode = NULL;
TiXmlElement *pEle = NULL;
pEle = hDoc.FirstChildElement().Element();
Print( pEle->Value());
TiXmlElement *pEle1 = pEle->FirstChildElement();
Print( pEle1->Value());
const char *p1 = pEle1->GetText();
Print( p1 );
TiXmlElement *pEle2 = pEle1->NextSiblingElement();
Print( pEle2->Value());
const char *p2 = pEle2->GetText();
Print( p2 );
TiXmlElement *pEle3 = pEle2->NextSiblingElement();
std::string s;
s = pEle3->Attribute( “priority” );
Print( s.c_str());
s = pEle3->Attribute( “local” );
int n = 0;
Print( s.c_str());
s = pEle3->Attribute( “count”, &n );
Print( s.c_str());
const char *p3 = pEle3->GetText();
Print( p3 );
Print( pEle3->Value());

// write
//TiXmlNode *pTemp = pEle3->InsertAfterChild( hDoc.FirstChildElement().Child( “port”, 0 ).Node(), *pEle2->Clone() );
TiXmlNode *pTemp = pEle3->LinkEndChild( pEle2->Clone());
if ( NULL == pTemp )
{
Print( “failed to insert” );
Print( doc.ErrorDesc());
}
doc.SaveFile();


读写的xml文件的内容我也列出来:

<!– this is a sample xml file to be tested with tinyxml
–>
<test>
<config>count=1 title=“home”</config>
<home>address=“yishun”</home>
<port priority=”1″ local=”flase” count=”5″>55112
<value>55112</value>
</port>

</test>

执行我写的这段代码,xml文件就变成这个样子:

<!– this is a sample xml file to be tested with tinyxml
–>
<test>
<config>count=1 title=&quot;home&quot;</config>
<home>address=&quot;yishun&quot;</home>
<port priority=”1″ local=”flase” count=”5″>55112
<value>55112</value>
<home>address=&quot;yishun&quot;</home>
</port>
</test>

上面很容易的看出来,哪些是读哪些是写了。
注意&quot:是”的意思,我自己的写的是”,但是再被tiny保存一遍就变成这个样子了,但是xml读上面的这个文件没有任何问题。

注意: tinyxml不支持如下格式:

<value

here is text

/>

支持的格式是:

<value>

here is text

</value>

注意:tinyxml不会解析文本的等号,例如上面的here is text前面有个v1=,也就是变成:


<value>

v1=here is text

</value>

如果你要出入v1让它替你直接读出here is text,它做不到,你需要读出整个字串,自己分析。但是你可以把上面的一长串东西变成:

<value v1=“here is text”>

</value>

这样v1就变成了它的属性,就可以直接读出了。


我把整个工程(vs2005)上传了,包括测试文件,可以下面的连接得到:

http://download.csdn.net/source/3449562

------分隔线----------------------------
标签(Tag):xml读写器 tinyxml
------分隔线----------------------------
推荐内容
猜你感兴趣