首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XPath从另一个属性值获取属性内容?

如何使用XPath从另一个属性值获取属性内容?
EN

Stack Overflow用户
提问于 2016-09-05 18:16:40
回答 2查看 156关注 0票数 0

我的XML类似于:

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>
<ClinicalDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                  xmlns='urn:hl7-org:v3'
                  xmlns:ext='urn:hl7-RU-EHR:v1'
                  xsi:schemaLocation='urn:hl7-org:v3'>
    <author>
        <time value='20160809000000+0300'/>
        <assignedAuthor>
            <id root='1.2.643.5.1.13.3.25.1.1.100.1.1.70' extension='1'/>
            <id root='1.2.643.100.3' extension='03480134121'/>
            <id nullFlavor='NI'/>
        </assignedAuthor>
    </author>
</ClinicalDocument>

我必须让extensionid中具有root的值= 1.2.643.100.3。我必须使用XPath 2.0。我尝试过:

  1. *[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id' and @id='1.2.643.100.3']/@extension。不工作
  2. /*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id'][2]/@extension,但id的顺序可以混合。所以,我应该用id的值来检索。

我需要它来通过Java的XPathExpression检索值

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-07 14:30:37

正确的XPath:/*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[local-name()='id' and @root='1.2.643.100.3']/@extension

票数 0
EN

Stack Overflow用户

发布于 2016-09-05 18:41:21

首先,将名称空间前缀u:绑定到urn:hl7-org:v3

然后,这个XPath

代码语言:javascript
复制
//u:id[@root='1.2.643.100.3']/@extension

将根据请求返回03480134121

如果无法绑定命名空间前缀,则可以使用此XPath,

代码语言:javascript
复制
//*[local-name() ='id' and @root='1.2.643.100.3']/@extension

它还将根据请求返回03480134121

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39335844

复制
相关文章

相似问题

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