xml - 如何从 SOAP 消息中获取命名空间的名称?

标签 xml soap namespaces

我有一个 SOAP 消息(见下文)。

使用 Xpath,如何从此消息中提取命名空间的名称?换句话说,是否有一个 Xpath 例程会返回文本“validateNewOrder”?

任何建议或帮助将是无价的。我一直在到处寻找,但没有找到解决方案。它让我发疯......

谢谢!

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
   <ns1:validateNewOrder xmlns:ns1="http://sire.rabobank.nl/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <sireheader xmlns="http://sire.rabobank.nl/">
       <sender>
         <compid>TEST</compid>
       </sender>
     </sireheader>
     <order xmlns="http://sire.rabobank.nl/">
       <account>123456789</account>
     </order>
   </ns1:validateNewOrder>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

最佳答案

local-name(/*[local-name() = 'Envelope']/*[local-name() = 'Body']/*[1])

返回 Body 下第一个元素的本地名称以命名空间不可知的方式。

用(c#)测试过
XDocument doc = XDocument.Load(@"XMLFile1.xml");
var xpath = "local-name(/*[local-name() = 'Envelope']/*[local-name() = 'Body']/*[1])";
var res = doc.Root.XPathEvaluate(xpath);

关于xml - 如何从 SOAP 消息中获取命名空间的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438527/

相关文章:

c# - 如何将 xml 文件作为资源添加到 Windows 窗体 exe

xml - XSLT 不复制 HTML 实体的值

xml - XPath:选择根,过滤子元素

java - 通过 Java 从示例 XML 创建 SOAP 消息

spring - 向 SOAP 消息添加 header 元素

PHP 无法创建具有命名空间的类的实例

android - Ionic App 的隐私政策

java - SSL 证书未随身份验证请求一起发送

python - 将变量插入Python和CoffeeScript中的字符串

ruby-on-rails - ruby /rails : Reopening vs Overwriting a Class