2013-03-07 86 views
0

我试着去阅读XMLReader的一个xml文件,这里是我的代码:的XmlReader阅读()异常

public XmlReader LoadXMLToReader(string inputXMLPathFile) 
{ 
    byte[] xmlData = Encoding.UTF8.GetBytes(inputXMLPathFile); 
    MemoryStream xmlStream = new MemoryStream(xmlData); 
    xmlStream.Position = 0; 

    XmlReader reader = XmlReader.Create(xmlStream); 
    reader.Read(); 
    return reader; 
} 

该功能给我一个错误的数据” reader.read()在根级别是无效的1号线位置1“,并且我阅读了关于BOM的信息,那么如何修复此功能以防止BOM?

<?xml version="1.0" encoding="UTF-8" ?> 
<Columns> 
    <Column>1</Column> 
    <Column>2</Column> 
    <Column>3</Column> 
</Columns> 

有人能帮助我吗?

+1

什么是你试图加载的xml文件的结构?你能否更新你的问题呢? – 2013-03-07 19:44:31

+5

你为什么要这样做?试试'XmlReader.Create(新的StreamReader(inputXMLPathFile))'。你为什么要做第一个“Read”?让你的调用者这样做。 – 2013-03-07 19:45:04

+0

这不能解决我的例外... – user1977936 2013-03-07 19:52:55

回答

0

的问题是在这行代码:

byte[] xmlData = Encoding.UTF8.GetBytes(inputXMLPathFile); 

你传递一个文件名到返回一个字符串的二进制表示的功能 - 字符串的实际传递给函数,而不是,不知何故,神奇地,一个文件被称为一个路径,它是一个字符串值被巧妙地传入。

如何简化您的方法有很多选项。其中之一是这样的:

public XmlReader LoadXMLToReader(string inputXMLPathFile) 
{ 
    return XmlReader.Create(File.Open(inputXMLPathFile, FileMode.Read)); 
}