具有命名空间的XPath和XML

sno*_*kin 1 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>
Run Code Online (Sandbox Code Playgroud)

我想获得CodeAval值,所以我试过:

ArrayOfAgence/Agence/CodeAval
Run Code Online (Sandbox Code Playgroud)

它显然没有用,因为这个XML有一个命名空间,所以,我该如何处理呢?

谢谢,

jas*_*sso 5

您在评论中提到您在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/">
Run Code Online (Sandbox Code Playgroud)

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

<xsl:value-of select="artos:ArrayOfAgence/artos:Agence/artos:CodeAval"/>
Run Code Online (Sandbox Code Playgroud)

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