【问题标题】:c# create xml from byte arrayc# 从字节数组创建xml
【发布时间】:2011-04-07 13:47:49
【问题描述】:

我有 xml 我得到的字节数组,从中获取 xml 字符串的最佳方法是什么?我试图使用 xmltextreader 和 memorystream 但没有成功..

【问题讨论】:

  • 你从哪里得到字节数组?你知道使用的编码吗?
  • XML 包含 base64 编码数据..
  • 我的意思是 XML 文档的 character encoding

标签: c# xml bytearray


【解决方案1】:
XmlDocument doc = new XmlDocument();
string xml = Encoding.UTF8.GetString(buffer);
doc.LoadXml(xml);

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);
【解决方案2】:

假设你的 xml 是默认的 'UTF8' 编码。你可以这样做;

string xml = System.Text.UTF8Encoding.UTF8.GetString(bytes);
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument().LoadXml(xml);

或者这个;

XmlDocument doc = new XmlDocument();
using (MemoryStream ms = new MemoryStream(buffer))
{
    doc.Load(ms);
}

【讨论】:

    【解决方案3】:

    基于编码,你可以这样做

    string xmlString = System.Text.UTF8Encoding.UTF8.GetString(bytes);
    

    并使用字符串

    XmlTextReader reader = new XmlTextReader(new StringReader(xmlString));
    

    【讨论】:

    • 糟糕... GetBytes 接受一个字符串并给出一个字节数组。 GetString 接受一个字节数组并给出一个字符串。 FTFY。
    【解决方案4】:

    看看System.Text.Encoding.UTF8 类。它应该让您将字节数组转换为 UTF8 字符串。

    【讨论】:

    • 在此处查看XML Encoding Defaults 页面。大多数情况下,UTF8 是正确的假设。
    • 不过,我认为您应该在答案中对此进行说明。
    猜你喜欢
    • 1970-01-01
    • 2011-10-05
    • 2015-11-19
    • 2013-09-23
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多