Мне нужен способ извлечь значение между тегами, учитывая путь в XML. Как я могу использовать TinyXpath для этого?
XML-пример:
<first node>
<second node>
hello
</second node>
<third node>
abcd
</third node>
</first node>
Если XML-файл выглядит так, как указано выше, и я указываю путь ввода "первый узел / второй узел", я должен иметь возможность получить результат как "привет".
Если входной путь "первый узел / третий узел", результат должен быть "abcd"
1 ответ
У вас недопустимый XML: имена тегов не могут содержать пробелы, а конечные теги пишутся как </tag>
не <tag/>
,
Здесь я исправил XML для вас:
<first-node>
<second-node>
hello
</second-node>
<third-node>
abcd
</third-node>
</first-node>
Теперь, чтобы получить second-node
а также third-node
содержимое вам нужно правильное выражение XPath, например //first-node/second-node/text()
а также //first-node/third-node/text()
,
Вот полный пример:
TiXmlDocument doc;
if (doc.LoadFile("example.xml"))
{
// Will be "hello"
TIXML_STRING s1 = TinyXPath::S_xpath_string(
doc.RootElement(),
"//first-node/second-node/text()");
// Will be "abcd"
TIXML_STRING s2 = TinyXPath::S_xpath_string(
doc.RootElement(),
"//first-node/third-node/text()");
}