0

我正在使用 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 表达式。简单地说,TinyXPath 需要在正确的子标签值匹配(解析为真)时返回给定的 SomeSetting1/2 字段中的值,以便测试应用程序可以使用它们。

我尝试了以下方法,但是使用子元素索引的方式很困难(通常我希望使用属性。这是我的尝试,它不返回结果(例如启用/禁用):-

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 大师的任何进一步帮助 - 谢谢!

4

1 回答 1

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()

希望这可以帮助!

于 2012-04-05T13:04:21.597 回答