2013-03-07 54 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)); 
}