![](/img/trans.png)
[英]System.Xml.XmlException 'Data at the root level is invalid, line 1, position 1' error is showing up when i changed from 1 xml file to 5
[英]System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1 - Valid XML file?
我在尝试从字节数组解析 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);
}
该问题称为字节顺序标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.