gpt4 book ai didi

c# - 选择 XML 节点,其中命名空间在 WCF 中的请求之间发生变化

转载 作者:行者123 更新时间:2023-12-04 16:58:06 28 4
gpt4 key购买 nike

我必须从 WCF 请求中选择特定节点 OperationContext.Current.RequestContext.RequestMessage.ToString()
问题是命名空间正在更改请求之间的前缀:

所以一旦是:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Body>
</s:Body>
</s:Envelope>

其他时间是:
<soapenv:Envelope xmlns:mes="MessageContracts" xmlns:req="RequestMessages" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
</soapenv:Body>
</soapenv:Envelope>

如何确保我始终正确获取 Body 节点?

最佳答案

只要节点始终使用相同的命名空间(在您的示例中就是这样),前缀是什么并不重要。您只需要确保在进行选择时为命名空间正确创建了前缀->命名空间映射:

以下代码应按原样适用于您的两个示例 xml:

// assuming XmlDocument doc has already been loaded with the XML response
XmlNamespaceManager nsm = new XmlNamespaceManager(doc.NameTable);
nsm.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
XmlNode body = doc.SelectSingleNode("/soap:Envelope/soap:Body", nsm);

Working ideone example

关于c# - 选择 XML 节点,其中命名空间在 WCF 中的请求之间发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com