2010-11-18 60 views
1
For Each file In My.Computer.FileSystem.GetFiles(inputFolder) 
     doc = XDocument.Load(file) 
    Next 

這崩潰了「‘[’是一個意外標記胡說,胡說,胡說。」的XDocument:您可以跳過加載<!DOCTYPE

這顯然在其上的第一行嗆..! ..

<!DOCTYPE RCWChapter PUBLIC "-//LSC//DTD RCW Chapter for Authoring//EN" [] > 

1,是無效的XML?爲什麼它掛在「[」?

2,我可以以某種方式加載XML文檔,但跳過DOCTYPE?我應該加載它作爲一個流? string.replace它?

+1

它窒息,因爲在DOCTYPE聲明沒有系統標識符。此外,'['和']'表示內部子集。除非需要聲明某些內容,否則不需要它們。 (在DTD中允許的任何聲明都可以在內部子集中進行,您通常會在此處看到實體聲明。) – 2010-11-18 22:10:09

+0

ok,但是如何跳過它? – Robert4Real 2010-11-19 03:17:43

+0

這就是爲什麼我評論而不是回答;我不知道如何跳過它。我從來沒有使用過XDocument。你有沒有控制輸入XML?如果是這樣,你可以添加一個系統標識符。 – 2010-11-19 04:12:48

回答

0

試試這個:你可以通過設置XDocumentType.InternalSubset屬性中刪除從DTD內部子集爲空

XDocument document = ...; 
if (document.DocumentType != null) 
document.DocumentType.InternalSubset = null;