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

dies mit einem Absturz " '[' ist ein unerwartetes Token Blah, blah, blah."XDocument: können Sie überspringen die <DOCTYPE Laden

Es ist offensichtlich auf der ersten Zeile Würgen, die ist ..! ..

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

1., ist das INVALID XML? Warum hängt es am "["?

2. Kann ich irgendwie das XML-Dokument laden, aber den DOCTYPE überspringen? Soll ich es als Stream laden? string.replace es?

+1

Es ist Würgen auf null, weil es keine Systemkennung in der DOCTYPE-Deklaration ist. Auch bedeuten "[" und "]" die interne Teilmenge. Sie werden nicht benötigt, es sei denn, Sie müssen etwas erklären. (Jede Deklaration, die in der DTD erlaubt ist, ist in der internen Teilmenge erlaubt. Normalerweise sehen Sie hier Entity-Deklarationen.) –

+0

ok, aber wie überspringe ich es? – Robert4Real

+0

Deshalb habe ich kommentiert, anstatt zu antworten; Ich weiß nicht, wie ich es überspringen kann. Ich habe XDocument nie benutzt. Haben Sie die Kontrolle über die Eingabe-XML? Wenn ja, können Sie eine System-ID hinzufügen. –

Antwort

0

Try This: die interne Teilmenge aus der DTD entfernen kann die XDocumentType.InternalSubset Eigenschaft, indem

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