XmlDocument.Save () fügt leere eckige Klammern in die Doctype-Deklaration ein

8

Jedes Mal wenn ich die Methode an

rufe %Vor%

Es fügt zwei eckige Klammern am Ende des DOCTYPE-Tags ein, z. B.

%Vor%

Weiß jemand, warum das passieren könnte? Ich möchte natürlich nicht, dass das passiert.

    
Vidar 31.05.2011, 18:28
quelle

2 Antworten

5

Das ist ein normaler (und optionaler) Teil einer DOCTYPE-Deklaration .

%Vor%

Wo DTD enthält interne Teilsatz-Deklarationen zu Ihrem Dokument.

    
user7116 31.05.2011, 18:44
quelle
2

Der zugrunde liegende Leser, der von XmlDocument verwendet wird (der XmlTextReader verwendet), unterscheidet nicht zwischen einem Dokument mit einer leeren internen Teilmenge und einer ohne interne Teilmenge, daher wird in beiden Fällen InternalSubset == "" zurückgegeben.

Dann, wenn XmlDocument.Save() aufgerufen wird, sieht es eine leere Zeichenfolge für InternalSubset und schreibt pflichtbewusst eine leere interne Teilmenge: [] .

Leider ist XmlDocument.DocumentType.InternalSubset schreibgeschützt, Sie können es also nicht auf null setzen. Sie können entweder:

  1. Verwenden Sie die untere Ebene XmlTextWriter.WriteDocType() , um mehr Kontrolle zu haben.

  2. Verwende XDocument , wo du XDocument.DocumentType.InternalSubset = null festlegen kannst.

wisbucky 17.12.2014 01:12
quelle

Tags und Links