System.Xml.XmlException:意外的XML声明。 XML声明必须是第一个

时间:2013-08-31 09:15:58

标签: c# xml xml-parsing windows-phone-8 linq-to-xml

我在编辑后将字符串解析为XDocument时出现此错误并保存。但任何人都可以帮我找到错误位置 - 第1行,第10475位。我怎么能得到那个位置?

  

System.Xml.XmlException:意外的XML声明。 XML   声明必须是文档中的第一个节点,并且没有空格   允许字符出现在它之前。第1行,第10475位。

if (storage.FileExists("APPSDATA.xml"))
{
  var reader = new StreamReader(new IsolatedStorageFileStream("APPSDATA.xml", FileMode.Open, storage));

  string xml = reader.ReadToEnd();
  var xdoc = XDocument.Parse(xml);//error here 
  reader.Close(); 

XML很大,这是jus的一部分

<?xml version="1.0" encoding="UTF-8"?>
<Ungdungs>
  <Ungdung>
    <Name>HERE City Lens</Name>
    <Id>b0a0ac22-cf9e-45ba-8120-815450e2fd71</Id>
    <Path>/Icon/herecitylens.png</Path>
    <Version>1.0.0.0</Version>
    <Category>HERE</Category>
    <Date>Uknown</Date>
  </Ungdung>
  <Ungdung>
    <Name>HERE Transit</Name>
    <Id>adfdad16-b54a-4ec3-b11e-66bd691be4e6</Id>
    <Path>/Icon/heretransit.png</Path>
    <Version>1.0.0.0</Version>
    <Category>HERE</Category>
    <Date>Uknown</Date>
  </Ungdung>

3 个答案:

答案 0 :(得分:5)

确保您的<?xml标记是文档中的第一个标记(并且它之前没有任何内容,包括空格)。 每个文档只能有一个<?xml,所以如果你有大量的XML,并且你的文档无法在某个地方重复使用,那么你的文档将无效。

答案 1 :(得分:1)

在我的情况下,这与字节顺序标记 - BOM有关。我在Notepad ++中打开了文件选择编码&#34;编码为UTF-8而没有BOM&#34;然后能够看到恼人的特征并删除它。

答案 2 :(得分:0)

如果您之前使用boolean&quot; append = true&#39;保存了xml文件,则可能会发生此错误。 如果错误&#39;它应该有用。