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

Cette plante avec un « « [ » est un jeton inattendu Bla, bla, bla. »XDocument: pouvez-vous ignorer le chargement de la <DOCTYPE

Il est évidemment d'étouffement sur la première ligne qui est ..! ..

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

1er, est ce XML INVALIDE? Pourquoi est-il suspendu au "["?

2ème, Puis-je en quelque sorte charger le document XML, mais ignorer le DOCTYPE? Devrais-je le charger en tant que flux? string.replace-t-il?

+1

Il est étouffait parce qu'il n'y a pas d'identificateur de système dans la déclaration DOCTYPE. De même, '[' et ''] 'signifient le sous-ensemble interne. Ils ne sont pas nécessaires sauf si vous devez déclarer quelque chose. (Toute déclaration autorisée dans la DTD est autorisée dans le sous-ensemble interne. Vous verrez généralement les déclarations d'entité ici.) –

+0

ok, mais comment l'ignorer? – Robert4Real

+0

C'est pourquoi j'ai commenté au lieu de répondre; Je ne sais pas comment l'ignorer. Je n'ai jamais utilisé XDocument. Avez-vous le contrôle de l'entrée XML? Si c'est le cas, vous pouvez ajouter un identificateur de système. –

Répondre

0

Essayez ceci, vous pouvez supprimer le sous-ensemble interne de la DTD en définissant la propriété XDocumentType.InternalSubset null

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