当我使用XmlWriter编写XML文件时,我遇到了以下问题:
我需要写的内容:
<soap:Body>some xml</soap:Body>
我尝试使用 XmlWriter.WriteStartElement方法
XmlWriter.WriteStartElement("soap:Body")
,但我会得到一个运行时异常,例如&#34;我在&soap; Body&#39;中 nvalid name character。 &#39;:&#39;字符,十六进制值0x3A,不能包含在名称中。&#34;
我是xmlwriter的新手,我不知道重载命名空间
如果你知道它的建议方式吗?
答案 0 :(得分:2)
首先必须声明该命名空间(soap
),然后将其与WriteStartElement
一起使用。
示例:
writer.WriteStartElement("root");
// Declare a namespace with AttributeString
writer.WriteAttributeString("xmlns", "soap", null, "something:something");
// Use it here
writer.WriteStartElement("Body", "something:something");
writer.WriteString("some xml");
writer.WriteEndElement();
writer.WriteEndElement();
结果将是:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:soap="something:something">
<soap:Body>some xml</soap:Body>
</root>
如果要在根元素中使用前缀,可以使用以下内容:
var soap = "http://www.w3.org/2003/05/soap-envelope";
// use prefix with namespace
writer.WriteStartElement("soap", "Envelope", soap);
writer.WriteStartElement("Body", soap);
writer.WriteString("some xml");
writer.WriteEndElement();
writer.WriteEndElement();
结果:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>some xml</soap:Body>
</soap:Envelope>