c# create xml from byte array
我有xml,我将其作为字节数组获取,从中获取xml字符串的最佳方法是什么? 我试图使用xmltextreader和memorystream,但没有成功。
-
您从哪里获得字节数组? 您知道使用的编码吗?
-
XML包含base64编码的数据。
-
我的意思是XML文档的字符编码。
1 2 3
| XmlDocument doc = new XmlDocument ();
string xml = Encoding .UTF8.GetString(buffer );
doc .LoadXml(xml ); |
要么
1 2 3
| XmlDocument doc = new XmlDocument ();
MemoryStream ms = new MemoryStream (buffer );
doc .Load(ms ); |
这假定您的数据具有UTF8编码,这对于XML是常见的。 另外,这里的buffer是字节数组。
-
好的答案,尽管MemoryStream是IDisposable的,所以不要忘记将其包装在using块中! :)
-
由于字节顺序标记(BOM),我发现此重载更为有用(感谢Jon Skeet)MemoryStream ms = new MemoryStream(buffer, true);
假设您的xml使用默认的" UTF8"编码,则可以执行以下操作;
1 2
| string xml = System.Text.UTF8Encoding.UTF8.GetString(bytes );
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument().LoadXml(xml ); |
或这个;
1 2 3 4 5
| XmlDocument doc = new XmlDocument ();
using (MemoryStream ms = new MemoryStream (buffer ))
{
doc .Load(ms );
} |
根据编码,您可以
1
| string xmlString = System.Text.UTF8Encoding.UTF8.GetString(bytes); |
并使用字符串
1
| XmlTextReader reader = new XmlTextReader (new StringReader (xmlString )); |
-
糟糕... GetBytes接受一个字符串,并给出一个字节数组。 GetString接受字节数组并给出一个字符串。 FTFY。
看一下System.Text.Encoding.UTF8类。 它应该让您将字节数组转换为UTF8字符串。
-
请参阅此处的XML编码默认值页面。 在大多数情况下,UTF8是正确的假设。
-
不过,我认为您应该在回答中对此进行注释。