Создание SOAP обменивается сообщениями с VB.NET XMLDocument

У меня есть некоторые проблемы при создании правильно отформатированного сообщения SOAP с помощью XMLDocument в VB.NET (ответы C# прекрасны хотя).

Я использую следующий код для ручного создания моего сообщения SOAP, что происходит, то, что префикс пространства имен soap:Header и 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 был способ, которым я разрешил это. Проблема была на самом деле относительно пространства имен. Вместо того, чтобы использовать строку оценивают каждый раз, хотя, я использовал следующее решение с помощью NamespaceURI DocumentElement:

Dim soapHeader As XmlElement = _xmlRequest.CreateElement("soap", "Header", _xmlRequest.DocumentElement.NamespaceURI)
Dim soapBody As XmlElement = _xmlRequest.CreateElement("soap", "Body", _xmlRequest.DocumentElement.NamespaceURI)
1
задан jaywon 20 July 2010 в 22:46
поделиться

1 ответ

Вам необходимо установить пространство имен XML в элементах Header и Body в пространство имен 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/")
2
ответ дан 2 September 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: