XmlWriter运行时异常

时间:2015-02-12 10:46:21

标签: c# asp.net xml vb.net soap

当我使用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的新手,我不知道重载命名空间

如果你知道它的建议方式吗?

1 个答案:

答案 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>