ASP.NET 与 XML-XmlTextWriter

作者:vkvi 来源:ITPOW(原创) 日期:2008-4-22

XmlTextWriter 用于生成 XML。

XmlTextWriter 的名称空间是:

System.Xml
StringBuilder media = new StringBuilder();

XmlTextWriter writer = new XmlTextWriter(new System.IO.StringWriter(media));
writer.Formatting = Formatting.Indented; writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteStartElement("state"); writer.WriteValue((int)State); writer.WriteEndElement(); writer.WriteStartElement("message"); writer.WriteNode(new XmlTextReader(MyMessage.CompositeXml(),
XmlNodeType.Element, null), false); writer.WriteEndElement(); writer.WriteStartElement("writer"); writer.WriteCData(Writer);
writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush();

writer.Formatting = Formatting.Indented; 让 XML 有缩进,另外 Indentation、IndentChar 可以自定义缩进的长度与字符。

writer.WriteStartDocument(); 写 XML 头,如果我们只写 XML 片段,则这里不是必须的。

writer.WriteStartElement("root"); 写根结点。

writer.WriteNode(new XmlTextReader(MyMessage.CompositeXml(), XmlNodeType.Element, null), false); 写入用另一个对象生成的节点。

writer.WriteCData(Writer); 用的是 WriteCData。

获取刚刚生成的 XML 字符串,可用 string xmlString = media.ToString();。

WriteValue、WriteString 会转换 <、> 为 &lt;、&gt;,所以在写入节点时不能用 WriteValue、WriteString,而是用 WriteNode,否则会把节点当作值。另外由于 XmlTextReader 的 ReaderString 读取 <、&lt;等时,不会转换,所以我们在写带有 <、> 的字符串时,最好还是使用 WriteCData。

相关文章