首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XPathQuery输出特定值?

如何使用XPathQuery输出特定值?
EN

Stack Overflow用户
提问于 2011-02-11 10:15:35
回答 2查看 86关注 0票数 1

当我这么做

代码语言:javascript
复制
account[@id=15]

我得到了

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<root>
  <account id="15" first_name="Sandra" last_name="Schlichting">
    <private_address address_id="19" />
    <profile_employee fk_id="15">
      <date_created>2011-1-2T1:1:00</date_created>
      <address building="3" room="2" floor="1" />
    </profile_employee>
    <profile_student fk_id="15">
      <address address_id="19" />
    </profile_student>
    <profile_student fk_id="15">
      <address address_id="45" />
    </profile_student>
  </account>
</root>

但是我只想输出

  • first_name
  • last_name
  • building
  • room

有人能想出怎么做吗?

更新:

这些命令起作用

代码语言:javascript
复制
account[@id=15]/profile_employee
account[@id=15]/profile_employee/address

但是输出整个元素,而不仅仅是属性空间和建筑物。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-11 17:33:02

虽然@Flack的答案是正确的,但是可以使用一个XPath表达式:生成想要的结果

代码语言:javascript
复制
concat('&#xA;', /*/account[@id=15]/@first_name,
       ' ', /*/account[@id=15]/@last_name,
       ' : ', /*/account[@id=15]/profile_employee/address/@building,
       '/', /*/account[@id=15]/profile_employee/address/@room
       )

当在所提供的XML文档上计算此XPath表达式时,

代码语言:javascript
复制
<root>
    <account id="15" first_name="Sandra" last_name="Schlichting">
        <private_address address_id="19" />
        <profile_employee fk_id="15">
            <date_created>2011-1-2T1:1:00</date_created>
            <address building="3" room="2" floor="1" />
        </profile_employee>
        <profile_student fk_id="15">
            <address address_id="19" />
        </profile_student>
        <profile_student fk_id="15">
            <address address_id="45" />
        </profile_student>
    </account>
</root>

想要的,正确的结果产生:

代码语言:javascript
复制
Sandra Schlichting : 3/2
票数 1
EN

Stack Overflow用户

发布于 2011-02-11 11:25:30

你需要:

代码语言:javascript
复制
/root/account[@id=15]/@first_name
/root/account[@id=15]/@last_name
/root/account[@id=15]/profile_employee/address/@building
/root/account[@id=15]/profile_employee/address/@room

如果在XSLT中对照样本进行测试,结果将是(为清晰起见的换行符):

代码语言:javascript
复制
Sandra
Schlichting
3
2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4967819

复制
相关文章

相似问题

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