我构建了XmlDocument,现在我想将其转换为数组。怎么办呢?
谢谢,
答案 0 :(得分:44)
尝试以下方法:
using System.Text;
using System.Xml;
XmlDocument dom = GetDocument()
byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);
如果您想保留文档的文本编码,请将Default
编码更改为所需的编码,或按照Jon Skeet's suggestion。
答案 1 :(得分:28)
将其写入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)
。
答案 2 :(得分:0)
Steve Guidi:谢谢!你的代码是对的钱!以下是我解决特殊字符问题的方法:
public static byte[] ConvertToBytes(XmlDocument doc)
{
Encoding encoding = Encoding.UTF8;
byte[] docAsBytes = encoding.GetBytes(doc.OuterXml);
return docAsBytes;
}