Что вы спрашиваете, как сделать, это создать плохо сформированный (синтаксически некорректный) XML.API XmlDocument не предназначен для этого.
Если вы используете имя элемента
soapenv:Header
, это означает, что soapenv
- это префикс пространства имен, который был объявлен для этого элемента (илипредка) с использованием псевдоатрибута xmlns:soapenv
.Если он не был объявлен, ваш вывод XML не будет принят любым уважающим себя анализатором XML.
Сигнатура метода, которую вы вызвали,
xmlDocument.CreateElement(string1, string2);
принимает два аргумента: полное имяэлемента (который может включать префикс, как это происходит в вашем случае);и URI пространства имен. Документация показывает ожидаемый результат:
Следующий код C #
XmlElement elem;
elem = doc.CreateElement("xy:item", "urn:abc");
приводит к элементу, эквивалентному следующему тексту XML.
<xy:item xmlns:item="urn:abc"/>
Ожидаемый URI пространства имен для этого элемента: "http://schemas.xmlsoap.org/soap/envelope/". Так что вы захотите объявить префикс soapenv с этим URI пространства имен:
string soapNSURI = "http://schemas.xmlsoap.org/soap/envelope/";
и использовать еготаким образом:
XmlElement xElmntheader = xmlDocument.CreateElement("soapenv:Header", soapNSURI);