首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有名称空间的XPath和XML

带有名称空间的XPath和XML
EN

Stack Overflow用户
提问于 2011-02-12 04:11:18
回答 2查看 368关注 0票数 1

我有以下XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfAgence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns="http://www.artos.co.il/">
  <Agence>
    <CodeAval>20008</CodeAval>
    <CodeSource>ArtPO</CodeSource>
    <LogicielSource>NTLIS</LogicielSource>
</Agence>
</ArrayOfAgence>

我想获得CodeAval的值,所以我尝试了:

代码语言:javascript
复制
ArrayOfAgence/Agence/CodeAval

它显然不起作用,因为这个XML有一个名称空间,那么,我需要如何处理它呢?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-12 04:34:23

您在评论中提到在XSLT中使用此XPath。在这种情况下,您需要为输入文档的默认名称空间http://www.artos.co.il/添加一个带有前缀的名称空间定义,然后在XPath表达式中使用这个前缀。

名称空间定义示例(它不需要在stylesheet元素中)

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:artos="http://www.artos.co.il/">

XPath表达式中的前缀用法示例

代码语言:javascript
复制
<xsl:value-of select="artos:ArrayOfAgence/artos:Agence/artos:CodeAval"/>

注意在每个元素名称前面添加的前缀。

票数 5
EN

Stack Overflow用户

发布于 2011-02-12 04:14:35

如果您的XPath库是名称空间感知的(您的似乎也是),那么它应该为您提供一种为名称空间指定别名的方法。

例如,如果您使用的是Java,那么javax.xml.xpath.XPath对象就有一个setNamespaceContext(NamespaceContext context)方法,它允许您提供一个名称空间解析器。

因此,您可能会告诉它a是名称空间http://www.artos.co.il/的别名,然后您的查询将变成a:ArrayOfAgence/a:Agence/a:CodeAval

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

https://stackoverflow.com/questions/4973553

复制
相关文章

相似问题

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