XmlTextReader.Normalization Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob Leerraum und Attributwerte normalisiert werden sollen, oder legt diesen fest.
public:
property bool Normalization { bool get(); void set(bool value); };
public bool Normalization { get; set; }
member this.Normalization : bool with get, set
Public Property Normalization As Boolean
Eigenschaftswert
true
, wenn normalisiert wird, andernfalls false
. Der Standardwert ist false
.
Ausnahmen
Festlegen dieser Eigenschaft, wenn der Reader geschlossen ist (ReadState ist ReadState.Closed
).
Beispiele
Im folgenden Beispiel wird das Verhalten des Lesers mit aktivierter Normalisierung und dann deaktiviert.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
// Create the XML fragment to be parsed.
String^ xmlFrag = "<item attr1=' test A B C\n"
"1 2 3'/>\n"
"<item attr2=''/>\n";
// Create the XmlNamespaceManager.
XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( gcnew NameTable );
// Create the XmlParserContext.
XmlParserContext^ context = gcnew XmlParserContext( nullptr,nsmgr,nullptr,XmlSpace::Preserve );
// Create the reader.
XmlTextReader^ reader = gcnew 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 � to 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();
}
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=''/>";
// 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 � to 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();
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
' Create the XML fragment to be parsed.
Dim xmlFrag as string = "<item attr1=' test A B C " + Chr(10) & _
" 1 2 3'/>" + Chr(10) & _
"<item attr2=''/>"
' Create the XmlNamespaceManager.
Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(new NameTable())
' Create the XmlParserContext.
Dim context as XmlParserContext = new XmlParserContext(nothing, nsmgr, nothing, XmlSpace.Preserve)
' Create the reader.
Dim reader as XmlTextReader = 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 � to 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()
end sub
end class
Hinweise
Hinweis
Ab dem .NET Framework 2.0 empfehlen wir, Instanzen mithilfe der XmlReader.Create Methode zu erstellenXmlReader, um neue Funktionen zu nutzen.
Diese Eigenschaft kann jederzeit geändert werden und wirkt sich auf den nächsten Lesevorgang aus.
Hinweis
Wenn dies XmlTextReader zum Erstellen eines XmlValidatingReader, zum Normalisieren von Attributwerten verwendet wird, Normalization
muss auf true
festgelegt werden.
Wenn Normalization
festgelegt false
ist, deaktiviert dies auch die Zeichenbereichsüberprüfung für numerische Entitäten. Daher sind Zeichenentitäten, z �
. B. , zulässig.
Im Folgenden wird die Attributwert normalisierung 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 an. (Nur ein einzelnes #x20 wird für eine "#xD#xA"-Sequenz angefügt, die Teil einer externen analysierten Entität oder des Literal-Entitätswerts einer internen analysierten Entität ist.)
Andere Zeichen müssen verarbeitet werden, indem sie an den normalisierten Wert angehängt werden.
Wenn der deklarierte Wert nicht CDATA ist, verwerfen Sie alle führenden und nachgestellten Leerzeichen (#x20) und ersetzen Sie Sequenzen von Leerzeichen (#x20) durch ein einzelnes Leerzeichen (#x20).
Das einzige Attribut oder die XmlTextReader
CDATA-Normalisierung. Die DTD-spezifische Normalisierung wird nicht ausgeführt, es sei denn, es wird innerhalb einer XmlValidatingReader
.
Verweisen Sie auf die Empfehlung von W3C XML 1.0, um die Normalisierung weiter zu diskutieren.