Ich analysiere eine große XML-Datei. Daher verwende ich einen XmlReader in Kombination mit XElement anstelle von XElement.Load ().
Ich habe als XElement-Objekt von XmlReader wie unten gezeigt erstellt und hier .
%Vor%Ich möchte diesen XElement-Objekt-Inhalt in der Datenbank als Zeichenfolge ohne Leerzeichen speichern. Keine der folgenden 3 Möglichkeiten funktioniert. Nur ein Hinweis, wenn ich die Xml im Speicher mit XElement.Load () laden, funktioniert die ToString (SaveOptions.DisableFormatting).
%Vor%Die XmlReaderSettings, die ich für das XmlReader-Objekt verwende, sind unten. Ich habe versucht, IgnoreWhitespace = true / false ohne Glück, aber ich kann es nicht so wahr wie einige Elemente übersprungen werden (Grund für das Überspringen finden Sie unter Warum? überspringt XmlReader jedes andere Element, wenn kein Whitespace-Trennzeichen vorhanden ist? ).
%Vor%Es funktioniert, wenn ich das XElement-Objekt analysiere, aber das den gesamten Zweck der Verwendung von XmlReader als XElement.Parse () nicht erfüllt, lädt die XML im Speicher.
%Vor%Wie kann ich den Leerraum entfernen?
Bearbeiten: Das musste ich tun:
reader.Read()
und XElement.ReadFrom(reader)
in derselben Iteration zurückzuführen, wodurch jedes zweite Element übersprungen wird. Das Reparieren der Schleife, die in der obigen Verbindung erwähnt wird, löst das. Das Problem hat nichts mit XmlReaderSettings
zu tun. xelement.ToString(SaveOptions.DisableFormatting)
entfernt die hübsche Formatierung. Versuchen Sie, in diesem Beispiel die XMLTextReader-Klasse zu verwenden. Der XMLTextReader hat eine Methode "WhitespaceHandling", die Sie auf keine setzen können. Es wäre hilfreich, diese Frage zu beantworten, wenn Sie eine Test-XML-Datei zur Verfügung gestellt haben könnten, um zu testen, ob XMLTextReader funktioniert.
Tags und Links whitespace xelement xmlreader