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>
最初の要素「user」にアクセスしたい。これを行う方法は次のとおりです。
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 関数) を見逃していたのでしょう。値が探している要素へのポインタを取得したいだけです。誰でも私を助けることができますか?よろしくお願いします。