需要读取的XML文件不太规范,XML文件一般是以
<?xml version="1.0" encoding="gb2312"?>
这件开头,而这个XML文件在<?xml version="1.0" encoding="gb2312"?>之前多了一个换行,处于XML文件的第二行,也就是这样<?xml version="1.0" encoding="gb2312"?>
  …………………其它内容………………我用xmlReader一读就出错。捕获的错误信息如下:
“意外的 XML 声明。XML 声明必须是文档中的第一个节点并且在它之前不允许出现空白字符。 行 2,位置 3”
异常类型XmlException

解决方案 »

  1.   

    我是直接XmlReader reader = XmlReader.Create(URL);得到的
    因为不是本地的feed,如果用string.Trim()方法的话,我还得再读下来,保存到一个string里面,再Trim一下,当XML文件比较大的时候,貌似有点浪费内存的样子.不过文本的处理应该很快的说.
    我试过加一个XmlReaderSetting.把里面我能看懂的都设了,什么偏移几行啊,忽略没必要的空白啊之类的,还是没有用......
    难道真的只能读到一个string里再Trim一下?没有别的方法了么...
    XmlReader对XML文件结构要求这么严?
      

  2.   

    using (StreamReader sr = new StreamReader(...))
    {
        sr.ReadLine();    
        XmlTextReader xr = new XmlTextReader(sr);
        while (xr.Read())
        {
            if (xr.NodeType == XmlNodeType.Element)
            {
                Console.WriteLine(xr.LocalName);
            }
        }
    }
      

  3.   

    楼上的是个好办法.但是我事先可能不知道有这么一个空格呢.
    我估计是没有办法了,我还是我用string.trim()吧..