Я использую RapidXML и C++ в VS2012 на ПК. Я уже проанализировал файл 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>
В этом конкретном примере, как я могу получить значение атрибута цены для второй книги? Могу ли я ввести значение атрибута заголовка «Полуночный дождь» и каким-то образом использовать его для получения следующего значения?
price
- это не атрибут, это узел. Атрибуты XML выглядят как<book price="5.95">
- person Roddy   schedule 14.08.2013