如何将XmlDocument转换为数组?
我构建了一个XmlDocument ,现在我想将它转换为数组。 如何才能做到这一点?
谢谢,
请尝试以下方法:
using System.Text; using System.Xml; XmlDocument dom = GetDocument() byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);
如果要保留文档的文本编码,请将Default
编码更改为所需的编码,或遵循Jon Skeet的建议 。
将它写入MemoryStream
,然后在流上调用ToArray
:
using System; using System.IO; using System.Text; using System.Xml; class Test { static void Main(string[] args) { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("root"); XmlElement element = doc.CreateElement("child"); root.AppendChild(element); doc.AppendChild(root); MemoryStream ms = new MemoryStream(); doc.Save(ms); byte[] bytes = ms.ToArray(); Console.WriteLine(Encoding.UTF8.GetString(bytes)); } }
要更好地控制格式,可以从流中创建XmlWriter
并使用XmlDocument.WriteTo(writer)
。
Steve Guidi :谢谢! 你的代码是对的钱! 这是我解决我的特殊字符问题的方法:
public static byte[] ConvertToBytes(XmlDocument doc) { Encoding encoding = Encoding.UTF8; byte[] docAsBytes = encoding.GetBytes(doc.OuterXml); return docAsBytes; }