XML空白属性创建,':'的性格
本文关键字:空白 XML 属性 创建 | 更新日期: 2023-09-27 18:17:57
我正在尝试使用以下代码创建xml。
XmlDocument xmlDocument = new XmlDocument();
XmlProcessingInstruction xPI = xmlDocument.CreateProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlDocument.AppendChild(xPI);
XmlElement xElmntheader = xmlDocument.CreateElement("soapenv:Header", " ");
xmlDocument.AppendChild(xElmntheader);
MemoryStream ms = new MemoryStream();
xmlDocument.Save(ms);
string text = System.Text.Encoding.GetEncoding("UTF-8").GetString(ms.GetBuffer(), 0, (int)ms.Length);
输出<xml version='1.0' encoding='UTF-8'?>
<soapenv:Header xmlns:soapenv=" " />
我想创建这样的
<xml version='1.0' encoding='UTF-8'?>
<soapenv:Header/>
如何从soapenv:Header
中剔除xmlns:soapenv=" "
?
任何帮助都将非常感激。
您问的是如何创建格式错误(语法错误)的XML。XmlDocument API并没有设计成这样。
如果使用元素名
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/"。因此,您需要使用名称空间URI声明soapenv前缀:
string soapNSURI = "http://schemas.xmlsoap.org/soap/envelope/";
并这样使用:
XmlElement xElmntheader = xmlDocument.CreateElement("soapenv:Header", soapNSURI);
不使用名称空间创建(例如使用默认名称空间),然后该部分将不需要:
xmlDocument.CreateElement("Header");