首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改XPath查询返回的节点值?

如何更改XPath查询返回的节点值?
EN

Stack Overflow用户
提问于 2012-07-25 01:04:48
回答 3查看 155关注 0票数 0

例如,我需要我的结果是这样的

代码语言:javascript
复制
<result>
  <French>
    <country>country-name</country>
    <country>country-name</country>
    ...
  </French>
  <German>
    <country>country-name</country>
    <country>country-name</country>
    ...
  </German>
</result>

但目前,我的结果是

代码语言:javascript
复制
  <language percentage="100">German</language>
  <language percentage="32">French</language>
  <language percentage="1">German</language>
  <language percentage="100">French</language>
  <language percentage="100">French</language>
  <language percentage="100">German</language>
  <language percentage="99">French</language>
  <language percentage="100">French</language>
  <language percentage="10">French</language>
  <language percentage="32">German</language>
  <language percentage="100">French</language>
  <language percentage="18">French</language>
  <language percentage="65">German</language>

这是我的问题:

代码语言:javascript
复制
 doc("countries.xml")//country/language[contains(text(), "French") or contains(text(), "German")]

原始数据如下所示:

代码语言:javascript
复制
<country name="Afghanistan" population="22664136" area="647500">
    <language percentage="11">Turkic</language>
    <language percentage="35">Pashtu</language>
    <language percentage="50">Afghan Persian</language>
</country>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-25 02:35:47

使用XQuery,这将解决这个问题:

代码语言:javascript
复制
  <result>
  {
    for $language in distinct-values(doc("countries.xml")//language)
    return
      element {translate($language, " ", "_")}
      {
        for $country in doc("countries.xml")//country[language = $language]
        return element country {string($country/@name)}
      }
  }
  </result>

请注意,该语言不能立即用作标记名,因为它包含空格(如“阿富汗波斯语”)-因此调用了translate

如果只需要指定的语言,请将for子句替换为

代码语言:javascript
复制
    for $language in ("French", "German")
票数 1
EN

Stack Overflow用户

发布于 2012-07-25 01:10:14

您可以对XML/Object使用LinQ,使用GroupBy创建查询并使用XMLWriter重写XML,或者将XML StyleSheet转换与xml/xsl一起使用。

票数 0
EN

Stack Overflow用户

发布于 2012-07-25 05:38:02

XPath只能选择输入文档中的节点。如果想要构造一个新的输出文档,可以使用XSLT或XQuery来实现,这两种方法都使用XPath从输入中选择节点,并添加工具来在输出中构造新节点。

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

https://stackoverflow.com/questions/11635824

复制
相关文章

相似问题

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