我需要一种方法来提取标记之间的值,给定XML中的路径。我怎样才能使用TinyXpath呢?

时间:2014-08-20 16:21:56

标签: xml tinyxml tinyxpath

XML EXMAPLE:

<first node>

   <second node>
           hello 
   </second node>

   <third node>
           abcd
    </third node>
</first node>

如果Xml文件如上所示,并且我给出了输入路径“第一个节点/第二个节点”,我必须能够将结果作为“hello”。

如果输入路径是“第一个节点/第三个节点”,则结果应为“abcd”

1 个答案:

答案 0 :(得分:1)

您的XML无效:标记名称不能包含空格,结束标记的编写方式与</tag>类似,而不是<tag/>

在这里,我为您修复了XML:

<first-node>
   <second-node>
           hello 
   </second-node>

   <third-node>
           abcd
   </third-node>
</first-node>

现在要获取second-nodethird-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()");
}