Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

XmlTextReader.Normalization-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft einen Wert ab, der angibt, ob Leerraum und Attributwerte normalisiert werden sollen, oder legt diesen fest.

Namespace:   System.Xml
Assembly:  System.Xml (in System.Xml.dll)

public bool Normalization { get; set; }

Eigenschaftswert

Type: System.Boolean

true, wenn normalisiert wird, andernfalls false. Die Standardeinstellung ist false.

Exception Condition
InvalidOperationException

Durch Festlegen dieser Eigenschaft, wenn der Reader geschlossen wurde (ReadState ist ReadState.Closed).

System_CAPS_noteHinweis

Ab .NET Framework 2.0, wir empfehlen, dass Sie XmlReader Instanzen mithilfe der XmlReader.Create Methode, um die neue Funktionalität nutzen.

Diese Eigenschaft kann jederzeit geändert werden und bei der nächsten Lesevorgang in Kraft.

System_CAPS_noteHinweis

Wenn der XmlTextReader wird zum Erstellen einer XmlValidatingReader, um die Normalisierung der Attributwerte Normalization muss festgelegt werden, um true.

Wenn Normalization Wert false, auch zeichenbereichüberprüfung für numerische Entitäten deaktiviert. Daher Zeichenentitäten, z. B. �, sind zulässig.

Im folgenden wird die Normalisierung von Attributwerten beschrieben:

  • Bei einem Zeichenverweis wird das Zeichen, auf das verwiesen werden soll, dem Attribut angefügt.

  • Bei einem Entitätsverweis muss der Ersetzungstext der Entität rekursiv verarbeitet werden

  • Fügen Sie für ein Leerzeichen (#x20, #xD, #xA, #x9) #x20 an den normalisierten Wert. (Nur ein einzelnes #x20 wird für eine Sequenz von "#xD #xA", die Teil einer externen analysierten Entität oder dem literalen Entitätswert einer internen analysierten Entität ist angefügt.)

  • Andere Zeichen müssen verarbeitet werden, indem sie an den normalisierten Wert angehängt werden.

  • Ist der deklarierte Wert nicht CDATA, verwerfen Sie alle führenden und nachgestellten Leerzeichen (#x20) Zeichen, und Ersetzen von Abfolgen von Leerzeichen (#x20) durch ein einzelnes Leerzeichen (#x20).

Die XmlTextReader führt nur die Attribut- oder CDATA-Normalisierung. Geschieht dies nicht die DTD-spezifische Normalisierung nur umschlossen ein XmlValidatingReader.

Finden Sie in der W3C XML 1.0-Empfehlung für Weitere Informationen zur Normalisierung.

Das folgende Beispiel zeigt die Verhalten des Readers mit Normalisierung aktiviert und anschließend deaktiviert.

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    // Create the XML fragment to be parsed.
    string xmlFrag  = 
    @"<item attr1='  test A B C
        1 2 3'/>
      <item attr2='&#01;'/>";                         

    // Create the XmlNamespaceManager.
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

    // Create the XmlParserContext.
    XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.Preserve);

    // Create the reader.
    XmlTextReader reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);

    // Show attribute value normalization.
    reader.Read();
    reader.Normalization = false;
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));
    reader.Normalization = true;
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));

    // Set Normalization back to false.  This allows the reader to accept
    // character entities in the &#00; to &#20; range.  If Normalization had
    // been set to true, character entities in this range throw an exception.
    reader.Normalization = false;
    reader.Read();
    reader.MoveToContent();
    Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr2"));

    // Close the reader.
    reader.Close();     

  }
}

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: