【问题标题】:Xpath selecting 1+ nodes when using [1]Xpath 在使用 [1] 时选择 1+ 个节点
【发布时间】:2016-03-16 04:26:51
【问题描述】:

给定以下 SOAP XML 响应:

http://pastebin.com/f57T8ctD(此处太大,无法显示)

如果我尝试使用下一个 Xpath 语句检索节点 <ssr>

//*[name() = 'ssr'][1]

我得到的是下一个:

<ssr xmlns="http://xml.amadeus.com/PNRACC_14_1_1A">
  <type>CTCE</type>
  <status>HK</status>
  <quantity>1</quantity>
  <companyId>OU</companyId>
  <freeText>XXX//GMAIL.COM</freeText>
</ssr>
<ssr xmlns="http://xml.amadeus.com/PNRACC_14_1_1A">
  <type>CTCM</type>
  <status>HK</status>
  <quantity>1</quantity>
  <companyId>OU</companyId>
  <freeText>XXX/SI</freeText>
</ssr>

而不是我尝试使用查询选择的第一个。

还有其他方法可以选择指定节点号的不同&lt;ssr&gt; 节点吗?

【问题讨论】:

  • 对不起,我忘了补充,我也试过使用 //*[local-name() = 'ssr'] 没有成功。
  • 您真的不应该为此使用name()local-name()。正确声明命名空间并使用命名空间前缀,这并不难。
  • 嗨,Tomalak,我已经使用了它,但没有成功。如果可以的话,我总是以正确的方式使用它们,但不知道为什么这次他们没有处理这个回复。关于重复,对不起。我无法找到答案,因为我不知道如何准确描述我的问题。

标签: xml xpath namespaces


【解决方案1】:

使用括号括住除索引之外的整个 XPath:

(//*[name() = 'ssr'])[1]

解释见下面的帖子:How to select specified node within Xpath node sets by index with Selenium?

【讨论】:

  • 哇,这速度很快,而且效果很好。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多