PC上のVS2012でrapidXMLとC++を使用しています。XML ファイルは既に解析済みですが、属性値を個別に出力したいと考えています。私は通常、以下のコードを使用してこれを行うことができます。ただし、このメソッドはノード名と属性名を知っている必要があります。同じ名前の複数のノードと同じ名前の複数の属性があるため、これは問題です。私の質問は、ノード名も属性名も一意でない場合、どのように単一の属性値を取得するのですか?
一意のノード名と属性名がある場合に使用するコード:
xml_node<> *node0 = doc.first_node("NodeName"); //define the individual node you want to access
xml_attribute<> *attr = node0->first_attribute("price"); //define the individual attribute that you want to access
cout << "Node NodeName has attribute " << attr->name() << " ";
cout << "with value " << attr->value() << "\n";
私のXMLテストファイル:
<catalog>
<book>
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<price>44.95</price>
</book>
<book>
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<price>5.95</price>
</book>
</catalog>
この特定の例では、2 冊目の書籍の価格属性の値を取得するにはどうすればよいでしょうか? title 属性値「Midnight Rain」を入力して、それを使用して次の値を取得することはできますか?