2014-09-05 125 views
2

我想將xml加載到XDocument對象中。XmlReader狀態應該是交互式

public void ValidateRules(XmlReader xml) 
{ 
    xml.MoveToContent(); 
    XDocument xDoc = new XDocument(); 
    xDoc = XDocument.Load(xml); 
} 

但是,我不斷收到錯誤「The XmlReader state should be Interactive」。爲此我搜索了一個工作,並在頂部添加了MoveToContent()方法(因爲它提到了這會將ReadState更改爲Interactive),但它不起作用。 ReadState是隻讀的,我無法更改該值。

這裏有什麼問題?

P.S.我試圖加載的XML文件有一個DTD引用。它與XML存在於相同的路徑中。不知道這是否有任何意義。

+1

如果你有使用的XmlReader,檢查了這一點:http://stackoverflow.com/questions/2441673/reading-xml-with-xmlreader-in -c-sharp。如果你可以從文件加載xml:xDoc = XDocument.Load(string URI); – Arie 2014-09-05 08:58:00

回答

0

鑑於你的函數的簽名,你可以這樣做:

var xDoc = XDocument.Parse(xml.ReadOuterXml()); 

或者,如果它不是由您的設計要求,不使用XmlReader - 如果它不是必需的東西代碼之外你」已經示出,可以跳過抽象附加層和簡單地使用:

var xDoc = XDocument.Load(PATH_TO_YOUR_FILE); 

var xDoc = XDocument.Parse(YOUR_XML_STRING); 
+0

我試過這段代碼。但它看起來不像我在XML中引用的DTD。它給了我以下錯誤: - 「引用未申報的實體'複製'第17行,位置8」。 'copy'是一個在DTD中定義的實體。 – 2014-09-08 05:58:20

+0

@AshwinPrabhu究竟哪一個代碼?這些是3個不同的代碼行。你也可以發佈你的XML參考? – decPL 2014-09-08 07:21:53