首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含组合的Xpath不起作用

包含组合的Xpath不起作用
EN

Stack Overflow用户
提问于 2015-07-02 15:27:20
回答 1查看 214关注 0票数 0
代码语言:javascript
复制
  <rim:Slot name="sourcePatientInfo">
                     <rim:ValueList>
                       <rim:Value>PID-3|ST-1000^^^&amp;1.3.6.1.4.1.21367.2003.3.9&amp;ISO</rim:Value>
                        <rim:Value>PID-5|Doe^John^^^</rim:Value>
                        <rim:Value>PID-7|999999</rim:Value>
                        <rim:Value>PID-8|M</rim:Value>
                        <rim:Value>PID-11|19999 St^^Metropolis^Il^44130^USA</rim:Value>
                     </rim:ValueList>

你好,我正在尝试从value部分获取数据。我没有发布整个xml,因为它很大,但这是运行这个xpath //*@name='sourcePatientInfo‘之后得到的部分。我想在此之后添加一个包含,比如PID-3文本,但是我的代码包含的不是工作代码。

代码语言:javascript
复制
./Value[contains(., 'PID-3|')]]

试着把它们结合起来

代码语言:javascript
复制
//*[@name='sourcePatientInfo' and ./Value[contains(., 'PID-3|')]]

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 17:05:30

我看到了两个问题。

  1. 您要选择的元素(rim:Value)的名称空间前缀为rim。这意味着在您的Value中使用XPath将无法工作,因为这将尝试在没有名称空间中选择Value。 如果使用的工具允许将前缀绑定到命名空间URI,则将其绑定到输入rim中的任何名称空间URI。然后,您可以在rim中使用XPath (或绑定名称空间URI的任何前缀)。 如果工具不允许将命名空间URI绑定到前缀,则可以使用local-name() (以及理想的namespace-uri())。
  2. rim:Valuerim:Slot (它有正确的@name)的后代,而不是直接的子级。这意味着./Value (或./rim:Value)不会选择任何东西。 如果您确信rim:Valuerim:ValueList的子级,则可以直接指定它。如果rim:ValueList可以改变,但rim:Value的深度是相同的,则可以使用*。如果所有这些都不为人所知,可以使用//

下面是一些选项( rim绑定)..。

代码语言:javascript
复制
//*[@name='sourcePatientInfo']/rim:ValueList/rim:Value[contains(.,'PID-3|')]

//*[@name='sourcePatientInfo']/*/rim:Value[contains(.,'PID-3|')]

//*[@name='sourcePatientInfo']//rim:Value[contains(.,'PID-3|')]

如果不能绑定命名空间..。

代码语言:javascript
复制
//*[@name='sourcePatientInfo']//*[local-name()='Value'][contains(.,'PID-3|')]

使用local-name()的示例将匹配本地名称为Value的任何元素,无论它在哪个名称空间中。更具体地说,在XPath中,您可以添加namespace-uri()..。

代码语言:javascript
复制
//*[@name='sourcePatientInfo']//*[local-name()='Value' and namespace-uri()='some namespace uri'][contains(.,'PID-3|')] 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31188725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档