我在 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>
对于这个具体的例子,我怎样才能得到第二本书的价格属性的值?我可以输入标题属性值“午夜雨”并以某种方式使用它来获取下一个值吗?