我想用TinyXML解析xml文件中的某些數據。用TinyXML在XML文檔中查找特定節點
這是我的text.xml文件內容:
<?xml version="1.0" encoding="iso-8859-1"?>
<toto>
<tutu>
<tata>
<user name="toto" pass="13" indice="1"/>
<user name="tata" pass="142" indice="2"/>
<user name="titi" pass="azerty" indice="1"/>
</tata>
</tutu>
</toto>
我要訪問的第一個元素「用戶」。執行此操作的方法如下:
TiXmlDocument doc("test.xml");
if (doc.LoadFile())
{
TiXmlNode *elem = doc.FirstChildElement()->FirstChildElement()->FirstChildElement()->FirstChildElement();
std::cout << elem->Value() << std::endl;
}
輸出:用戶。
但該代碼是非常醜陋的,而不是通用的。我嘗試了下面的代碼來模擬與上面的代碼相同的行爲,但它不起作用並出現錯誤。
TiXmlElement *getElementByName(TiXmlDocument &doc, std::string const &elemt_value)
{
TiXmlElement *elem = doc.FirstChildElement(); //Tree root
while (elem)
{
if (!std::string(elem->Value()).compare(elemt_value))
return (elem);
elem = elem->NextSiblingElement();
}
return (NULL);
}
也許我錯過了庫中可以完成這項工作的一個特殊函數(一個getElementByName函數)。我只想獲得一個指向元素的指針,其中的值是我正在尋找的元素。有人可以幫助我嗎?在此先感謝您的幫助。
貌似['虛擬BOOL TiXmlNode ::接受()'方法](http://www.grinninglizard.com /tinyxmldocs/classTiXmlNode.html#cc0f88b7462c6cb73809d410a4f5bb86)是你想要的。實現['Visitor'接口](http://www.grinninglizard.com/tinyxmldocs/classTiXmlVisitor.html),'TiXmlNode'將爲你走樹。 – Tomalak 2012-08-12 10:35:37