我有以下XML:
<?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的值,所以我尝试了:
ArrayOfAgence/Agence/CodeAval它显然不起作用,因为这个XML有一个名称空间,那么,我需要如何处理它呢?
谢谢,
发布于 2011-02-12 04:34:23
您在评论中提到在XSLT中使用此XPath。在这种情况下,您需要为输入文档的默认名称空间http://www.artos.co.il/添加一个带有前缀的名称空间定义,然后在XPath表达式中使用这个前缀。
名称空间定义示例(它不需要在stylesheet元素中)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:artos="http://www.artos.co.il/">XPath表达式中的前缀用法示例
<xsl:value-of select="artos:ArrayOfAgence/artos:Agence/artos:CodeAval"/>注意在每个元素名称前面添加的前缀。
发布于 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
https://stackoverflow.com/questions/4973553
复制相似问题