c# - System.Xml.XmlException : Data at the root level is invalid. 第 1 行,位置 1 - 有效的 XML 文件?

标签 c# xml

我在尝试从字节数组解析 xml 时收到此错误。

System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1

有问题的失败代码是:

public Packet PacketProcessor(Packet packet, out DeviceVerifyStep step, out string device_model, out string device_sn)
    {
        step = DeviceVerifyStep.None;
        device_model = null;
        device_sn = null;

        XmlDocument doc = new XmlDocument();
        try
        {
            string msg_xml = Encoding.ASCII.GetString(packet.body);
            Console.WriteLine(msg_xml);
            doc.LoadXml(msg_xml);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            return null;
        }

它未能以十六进制解析的 XML 是

3c3f786d6c2076657273696f6e3d22312e30223f3e3c4d6573736167653e3c5465726d696e616c547970653e45433530303c2f5465726d696e616c547970653e0d0a3c5465726d696e616c49443e313c2f5465726d696e616c49443e0d0a3c44657669636553657269616c4e6f3e6e756c6c65643c2f44657669636553657269616c4e6f3e0d0a3c526571756573743e4c6f67696e526571756573743c2f526571756573743e0d0a3c2f4d6573736167653e00

转换为 ASCII 时为:

<?xml version="1.0"?><Message><TerminalType>EC500</TerminalType>
<TerminalID>1</TerminalID>
<DeviceSerialNo>nulled</DeviceSerialNo>
<Request>LoginRequest</Request>
</Message>?

我已经删除了最后两个字节 3e00,我认为这可能导致无效的 XML,但没有成功。

如有任何帮助,我们将不胜感激。

最佳答案

你可以这样尝试:

string msg_xml = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
if (xml.StartsWith(msg_xml))
{
    xml = xml.Remove(0, msg_xml.Length);
}

问题称为 Byte Order mark .

关于c# - System.Xml.XmlException : Data at the root level is invalid. 第 1 行,位置 1 - 有效的 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648887/

相关文章:

c# - 将 Window 控件添加为视觉对象的 WPF 解决方法

c# - RSA解密异常: The length of the data to decrypt is not valid for the size of this key

c# - 当数据库日志信息应用于每个 Crystal Reports 部分时,应用程序运行缓慢

ios - 如何将xml解析成表格 View

c# - 如何创建忽略命名空间且不检查字符的 XmlTextReader

c# - 从 XElement 读取文本内容

c# - 如何以编程方式设置 ADO.Net DataTable 的 DataColumn 的 NullValue 属性

C# 和读取大型 XML 文件

android - 如何修复 CardView 角半径问题?

java - 在 Android 的内部存储中保存文件