首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么“根级别的数据无效。行1,位置1。”对于XML文档?

为什么“根级别的数据无效。行1,位置1。”对于XML文档?
EN

Stack Overflow用户
提问于 2013-07-30 20:38:00
回答 5查看 117.2K关注 0票数 28

我使用的是通过互联网传输XML文档的第三方DLL。

为什么DLL会抛出以下异常?

根级别的

数据无效。第1行,位置1。(请参阅下面的完整异常文本。)

下面是XML文档的前几行:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?> <REQUEST>   <HEADER>
    <REQUESTID>8a5f6d56-d56d-4b7b-b7bf-afcf89cd970d</REQUESTID>
    <MESSAGETYPE>101</MESSAGETYPE>
    <MESSAGEVERSION>3.0.2</MESSAGEVERSION>

例外:

代码语言:javascript
复制
System.ApplicationException was caught
      Message=Unexpected exception.
      Source=FooSDK
      StackTrace:
           at FooSDK.RequestProcessor.Send(String SocketServerAddress, Int32 port)
           at Foo.ExecuteRequest(Int32 messageID, IPayload payload, Provider prov)
           at Foo.SendOrder(Int32 OrderNo)
      InnerException: System.Xml.XmlException
           LineNumber=1
           LinePosition=1
           Message=Data at the root level is invalid. Line 1, position 1.
           Source=System.Xml
           SourceUri=""
           StackTrace:
                at System.Xml.XmlTextReaderImpl.Throw(Exception e)
                at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
                at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
                at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
                at System.Xml.XmlTextReaderImpl.Read()
                at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
                at System.Xml.XmlDocument.Load(XmlReader reader)
                at System.Xml.XmlDocument.LoadXml(String xml)
                at XYZ.RequestProcessor.GetObjectFromXML(String xmlResult)
                at XYZ.RequestProcessor.Send(String SocketServerAddress, Int32 port)
           InnerException:
EN

回答 5

Stack Overflow用户

发布于 2014-07-01 22:51:36

我最终发现有一个字节标记异常,并使用下面的代码删除了它:

代码语言:javascript
复制
 string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
    if (xml.StartsWith(_byteOrderMarkUtf8))
    {
        var lastIndexOfUtf8 = _byteOrderMarkUtf8.Length-1;
        xml = xml.Remove(0, lastIndexOfUtf8);
    }
票数 50
EN

Stack Overflow用户

发布于 2013-07-30 20:48:22

我可以给你两个建议:

  1. 看起来你使用的是"LoadXml“而不是"Load”方法。在某些情况下,它对我很有帮助。
  2. ,你有一个编码问题。您能检查XML文件的编码并将其写入吗?
票数 12
EN

Stack Overflow用户

发布于 2016-12-08 04:49:33

删除<?xml version="1.0" encoding="utf-8"?>之前的所有内容

有时,会有一些“不可见”(并非在所有文本编辑器中都可见)。一些程序增加了这个功能。

它叫BOM,你可以在这里阅读更多信息:https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17947238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档