Мне нужен способ извлечь значение между тегами, учитывая путь в 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()");
}
Другие вопросы по тегам