-2

在编辑并保存后将字符串解析到 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 很大,这只是其中的一部分

<?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>
4

3 回答 3

6

确保您的<?xml标签是文档中的第一件事(并且在此之前它没有任何内容,这包括空格)。每个文档只能有<?xml一次,因此,如果您有大量 XML 并且您在某处重复此标记,那么您的文档将无效。

于 2013-08-31T09:47:45.597 回答
2

在我的情况下,这与字节顺序标记有关 - BOM。我在记事本++中打开了文件,选择了编码“在没有BOM的UTF-8中编码”,然后能够看到烦人的字符并将其删除。

于 2013-11-25T06:39:38.383 回答
0

如果您之前使用布尔值“append = true”保存了 xml 文件,则可能会发生此错误。如果“假”,它应该可以工作。

于 2014-10-23T18:58:47.470 回答