gpt4 book ai didi

c# - 使用 XMLDocument VB.NET 构建 SOAP 消息

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

我在构建格式正确的 时遇到了一些问题 SOAP 消息使用 XML文档在 VB.NET 中(尽管 C# 答案很好)。

我正在使用以下代码手动创建我的 SOAP 消息,发生的事情是 的命名空间前缀 SOAP :标题 SOAP : body 在输出 XML 中被剥离:

Dim soapEnvelope As XmlElement = _xmlRequest.CreateElement("soap", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/")
soapEnvelope.SetAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
soapEnvelope.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
_xmlRequest.AppendChild(soapEnvelope)
Dim soapHeader As XmlElement = _xmlRequest.CreateElement("soap", "Header", String.Empty)
_xmlRequest.DocumentElement.AppendChild(soapHeader)
Dim soapBody As XmlElement = _xmlRequest.CreateElement("soap", "Body", String.Empty)
_xmlRequest.DocumentElement.AppendChild(soapBody)

这导致以下输出:
    <?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
...
</Header>
<Body>
....
</Body>
</soap:Envelope>

我需要的是:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
...
</soap:Header>
<soap:Body>
....
</soap:Body>
</soap:Envelope>

注意:我感谢所有的输入,但不管如何引用 SOAP 应该在接收方或类似的地方工作或解析,最重要的是我需要按照描述生成 XML。提前致谢!

解决方案:
非常类似于 Quartmeister 答案是我解决这个问题的方式。问题实际上与命名空间有关。我没有每次都使用字符串值,而是使用了以下解决方案 命名空间URI 文档元素 :
Dim soapHeader As XmlElement = _xmlRequest.CreateElement("soap", "Header", _xmlRequest.DocumentElement.NamespaceURI)
Dim soapBody As XmlElement = _xmlRequest.CreateElement("soap", "Body", _xmlRequest.DocumentElement.NamespaceURI)

最佳答案

您需要将 Header 和 Body 元素上的 XML 命名空间设置为 soap 命名空间:

Dim soapHeader As XmlElement = _xmlRequest.CreateElement("soap", "Header", "http://schemas.xmlsoap.org/soap/envelope/")
Dim soapBody As XmlElement = _xmlRequest.CreateElement("soap", "Body", "http://schemas.xmlsoap.org/soap/envelope/")

关于c# - 使用 XMLDocument VB.NET 构建 SOAP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3294251/

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