Это пример того, как получить значение для xpath, который вы пытаетесь оценить с помощью libxml ++.
Основано на ответе Александра Жасмина, но он показывает только, как напечатать атрибут xpath, и нетривиально выяснить, как напечатать значение Node
, потому что вы должны привести его к определенному объекту (также его броски ответа исключение).
#include <iostream>
#include <libxml++/libxml++.h>
using namespace std;
using namespace Glib;
using namespace xmlpp;
int main(int argc, char* argv[])
{
// Parse the file
DomParser parser;
parser.parse_file("sample.xml");
Node* root = parser.get_document()->get_root_node();
// Xpath query
NodeSet result = root->find("/root/ApplicationSettings/level_three");
// Get first element from result
Element *first_element = (Element *)result.at(0);
// Print the content of the Element
cout << first_element->get_child_text()->get_content() << endl;
}
sample.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<ApplicationSettings>
<level_three>hello world</level_three>
</ApplicationSettings>
</root>
компилировать
g++ test.cpp -o test `pkg-config libxml++-2.6 --cflags` `pkg-config libxml++-2.6 --libs`
пробег
./test