在TinyXPath中如何通过元素内容索引来查询数据

时间:2012-04-04 11:44:03

标签: html xml xpath xerces tinyxpath

我正在使用TinyXPath来增强现有的测试工具,以便可以获取和使用来自客户XML结构的数据。

XML看起来像这样

<Platform>
  <LinkData>
    <Plan>
      <Label>A</Label>
        <Settings>
           <SomeSetting1>ENABLED</SomeSetting1>
           <SomeSetting2>ENABLED</SomeSetting2>
        </Settings>
    </Plan>
    <Plan>
      <Label>B</Label>
        <Settings>
           <SomeSetting1>ENABLED</SomeSetting1>
           <SomeSetting2>DISABLED</SomeSetting2>
        </Settings>
    </Plan>
  </LinkData>
</Platform>

鉴于我无法控制的上述结构,我需要能够为TinyXPath构造XPath表达式。简单地说,当正确的子Label值匹配时,TinyXPath需要返回SomeSetting1 / 2字段中的值(解析为true),因此测试应用可以使用它们。

我已尝试过以下方法,但是使用子元素编制索引(通常我会期望使用属性。这是我的尝试不返回结果(例如ENABLED / DISABLED): -

Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting1/text()
Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting2/text()
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting1/text()
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting2/text()

TinyXPath专家的任何进一步帮助将非常感谢 - 谢谢!

1 个答案:

答案 0 :(得分:0)

此xpath将使用给定的XML返回您要查找的内容:

//Settings/child::node()/text()

此xpath还将通过concat |添加对标签和分组的检查:

//LinkData/Plan[Label/text()='A']/Settings/child::node()/text() | //LinkData/Plan[Label/text()='B']/Settings/child::node()/text()

这个将它们组合在标签检查中:

//LinkData/Plan[Label/text()='A' or Label/text()='B']/Settings/child::node()/text()

希望这有帮助!