xml - 带有命名空间的 XPath 和 XML

标签 xml xpath xml-namespaces

我有以下 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 有一个命名空间,那么,我需要如何处理这个?

谢谢,

最佳答案

您在评论中提到您在 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"/>

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

关于xml - 带有命名空间的 XPath 和 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973553/

相关文章:

java - 在 Android 中解析 XML 流

xml - 如何将特定的命名空间添加到我的 xsd

javascript - cheeriojs 迭代 xml 响应

java - 获取 XML 文档中使用的前缀/命名空间绑定(bind),最好使用 org.w3c.dom 和 javax.xml API

c# - 如何到达命名空间 xml 文件中的节点?

java - 在 Java 中为 XML 生成 SHA-256 哈希

selenium - CSS 和 XPath 选择器有什么区别?就跨浏览器测试的性能而言,哪个更好?

c# - 查找任何具有自定义前缀 HtmlAgilityPack 的互文

xml - XPath 3.x - 排序功能

java - 为什么我的 JAXB Unmarshaller 找不到在导入模式中声明的元素?