(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

XmlTextReader.Normalization-Eigenschaft

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

Typ: System.Boolean
true , wenn normalisiert wird, andernfalls false. Die Standardeinstellung ist false.

AusnahmeBedingung
InvalidOperationException

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

HinweisHinweis

Die empfohlene Vorgehensweise für die Version .NET Framework 2.0 besteht darin, mithilfe der XmlReader.Create-Methode XmlReader-Instanzen zu erstellen. So können Sie die neuen Features dieser Version in vollem Umfang nutzen. Weitere Informationen finden Sie unter Erstellen von XML-Readern.

Diese Eigenschaft kann jederzeit geändert werden und wird beim nächsten Lesevorgang wieder wirksam.

HinweisHinweis

Wenn der XmlTextReader verwendet wird, um einen XmlValidatingReader zu konstruieren, muss Normalization zur Normalisierung der Attributwerte auf true festgelegt werden.

Wenn Normalization auf false festgelegt ist, wird auch der Prüfvorgang für den Zeichenbereich in numerischen Entitäten deaktiviert. Daraus ergibt sich, dass Zeichenentitäten, z. B. �, zulässig sind.

Im Folgenden wird die Normalisierung von Attributwerten beschrieben:

  • Für einen Zeichenverweis wird das Zeichen, auf das verwiesen werden soll, dem Attributwert angefügt.

  • Für den Verweis auf eine Entität wird der Ersatztext der Entität rekursiv verarbeitet.

  • Für ein Leerzeichen (#x20, #xD, #xA, #x9) wird dem normalisierten Wert #x20 angefügt. (Für eine "#xD#xA"-Sequenz, die Teil einer extern analysierten Entität oder der literale Entitätswert einer intern analysierten Entität ist, wird nur ein einzelnes #x20 angefügt.)

  • Andere Zeichen werden durch Anfügen an den normalisierten Wert verarbeitet.

  • Wenn der deklarierte Wert kein CDATA-Wert ist, müssen Sie alle führenden und nachgestellten Leerzeichen (#x20) entfernen und Leerzeichenfolgen (#x20) durch ein einzelnes Leerzeichen (#x20) ersetzen.

Der XmlTextReader führt nur die Attribut- oder CDATA-Normalisierung aus. Die DTD-spezifische Normalisierung wird von ihm nur umschlossen mit einem XmlValidatingReader ausgeführt.

Weiterführende Erläuterungen zur Normalisierung finden Sie in der W3C-Empfehlung zu XML, Version 1.0.

Im folgenden Beispiel wird das Verhalten des Readers bei aktivierter und anschließend bei deaktivierter Normalisierung veranschaulicht.


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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft