gpt4 book ai didi

.net - SOAP,在标签 中使用前缀

转载 作者:行者123 更新时间:2023-12-04 17:05:03 25 4
gpt4 key购买 nike

我不擅长 SOAP。第三方 SOAP 服务为我提供了用于他们 api 的示例代码。他们提供的代码(我完全复制到我的解决方案中)不会在所有标签之前吐出所需的前缀。

现在,他们给我的代码使我发出所有标签都没有前缀的请求/响应......

<tagName />

.我如何使所有标签看起来像...
<com:tagName />

这是我的 WebServicesClient 的属性
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name = "catalogHttpBinding", Namespace = "http://com.etilize.spexlive")]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(CategoryCollection))]
public partial class catalog : Microsoft.Web.Services3.WebServicesClientProtocol

最佳答案

首先,您使用的是过时的 WSE。除非你别无选择,否则不要这样做。

当我说“没有其他选择”时,我包括“无法承受辞职”。

其次,这不是 SOAP 问题。它是基本的 XML。您需要将元素放在特定的命名空间中。由于看起来您使用了正确的过时工具来生成客户端,因此您的元素很可能已经在正确的命名空间中。

这对您来说可能是错误的,因为您没有意识到,在 XML 中, namespace 前缀并不重要 - 只有前缀只是 namespace 的别名,而 namespace 才是重要的。特别是,以下三个示例是相同的:

<a:ElementName xmlns:a="urn:foo"/>

<b:ElementName xmlns:b="urn:foo"/>

<ElementName xmlns="urn:foo"/>

如果您的供应商实际上需要一个特定的前缀(而不是一个特定的命名空间),那么它们就被严重破坏,违反了国际标准,应该被公开 mock 为无能。如果每个供应商都实现自己版本的 XML 标准,那么不久之后它就不再是标准,我们将无法依赖它。由于 XML 的大部分力量来自于它是一个标准这一事实,这将是不幸的。

关于.net - SOAP,在标签 <xx :tag> 中使用前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074733/

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