Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft einen Wert ab, der angibt, wie der Reader Entitäten behandelt, oder legt diesen fest.
Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)
Syntax
'Declaration
Public Property EntityHandling As EntityHandling
'Usage
Dim instance As XmlValidatingReader
Dim value As EntityHandling
value = instance.EntityHandling
instance.EntityHandling = value
public EntityHandling EntityHandling { get; set; }
public:
property EntityHandling EntityHandling {
EntityHandling get ();
void set (EntityHandling value);
}
/** @property */
public EntityHandling get_EntityHandling ()
/** @property */
public void set_EntityHandling (EntityHandling value)
public function get EntityHandling () : EntityHandling
public function set EntityHandling (value : EntityHandling)
Eigenschaftenwert
Einer der EntityHandling-Werte. Wenn kein EntityHandling angegeben ist, wird dieses auf den Standardwert EntityHandling.ExpandEntities festgelegt.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Es wurde ein ungültiger Wert angegeben. |
Hinweise
Hinweis
Die XmlValidatingReader-Klasse ist in Microsoft .NET Framework, Version 2.0 veraltet. Sie können eine Instanz eines validierenden XmlReader mithilfe der XmlReaderSettings-Klasse und der Create-Methode erstellen. Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader".
Diese Eigenschaft kann geändert werden und tritt nach dem nächsten Aufruf von Read in Kraft.
Wenn EntityHandling auf ExpandCharEntities festgelegt ist, werden Attributwerte nur partiell normalisiert. Der Reader normalisiert jeden einzelnen Textknoten unabhängig vom Inhalt angrenzender Entitätsverweisknoten.
Beachten Sie zur Veranschaulichung des Unterschieds zwischen den Modi der Entitätsbehandlung folgenden XML-Code:
<!DOCTYPE doc [<!ENTITY num "123">]>
<doc> A # </doc>
Wenn EntityHandling auf ExpandEntities festgelegt ist, enthält der "doc"-Elementknoten einen Textknoten mit dem erweiterten Entitätstext:
Depth |
NodeType |
Name |
Wert |
|---|---|---|---|
1 |
Text |
A 123 |
Wenn EntityHandling auf ExpandCharEntites und WhitespaceHandling auf Significant oder All festgelegt ist, erweitert das "doc"-Element die Zeichenentität und gibt die allgemeine Entität als Knoten zurück:
Depth |
NodeType |
Name |
Wert |
|---|---|---|---|
1 |
Text |
Eine |
|
1 |
EntityReference |
num |
|
1 |
SignificantWhitespace |
Beispiel
Im folgenden Beispiel wird die ResolveEntity-Methode zum Erweitern einer allgemeinen Entität verwendet.
Option Strict
Option Explicit
Imports System
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim reader As XmlValidatingReader = Nothing
Dim txtreader As XmlTextReader = Nothing
Try
'Create and load the XmlTextReader with the XML file.
txtreader = New XmlTextReader("book1.xml")
txtreader.WhitespaceHandling = WhitespaceHandling.None
'Create the XmlValidatingReader over the XmlTextReader.
'Set the reader to not expand general entities.
reader = New XmlValidatingReader(txtreader)
reader.ValidationType = ValidationType.None
reader.EntityHandling = EntityHandling.ExpandCharEntities
reader.MoveToContent() 'Move to the root element.
reader.Read() 'Move to title start tag.
reader.Skip() 'Skip the title element.
'Read the misc start tag. The reader is now positioned on
'the entity reference node.
reader.ReadStartElement()
'Because EntityHandling is set to ExpandCharEntities, you must call
'ResolveEntity to expand the entity. The entity replacement text is
'then parsed and returned as a child node.
Console.WriteLine("Expand the entity...")
reader.ResolveEntity()
Console.WriteLine("The entity replacement text is returned as a text node.")
reader.Read()
Console.WriteLine("NodeType: {0} Value: {1}", reader.NodeType, reader.Value)
Console.WriteLine("An EndEntity node closes the entity reference scope.")
reader.Read()
Console.WriteLine("NodeType: {0} Name: {1}", reader.NodeType, reader.Name)
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub 'Main
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlValidatingReader reader = null;
XmlTextReader txtreader = null;
try
{
//Create and load the XmlTextReader with the XML file.
txtreader = new XmlTextReader("book1.xml");
txtreader.WhitespaceHandling = WhitespaceHandling.None;
//Create the XmlValidatingReader over the XmlTextReader.
//Set the reader to not expand general entities.
reader = new XmlValidatingReader(txtreader);
reader.ValidationType = ValidationType.None;
reader.EntityHandling = EntityHandling.ExpandCharEntities;
reader.MoveToContent(); //Move to the root element.
reader.Read(); //Move to title start tag.
reader.Skip(); //Skip the title element.
//Read the misc start tag. The reader is now positioned on
//the entity reference node.
reader.ReadStartElement();
//Because EntityHandling is set to ExpandCharEntities, you must call
//ResolveEntity to expand the entity. The entity replacement text is
//then parsed and returned as a child node.
Console.WriteLine("Expand the entity...");
reader.ResolveEntity();
Console.WriteLine("The entity replacement text is returned as a text node.");
reader.Read();
Console.WriteLine("NodeType: {0} Value: {1}", reader.NodeType ,reader.Value);
Console.WriteLine("An EndEntity node closes the entity reference scope.");
reader.Read();
Console.WriteLine("NodeType: {0} Name: {1}", reader.NodeType,reader.Name);
}
finally
{
if (reader != null)
reader.Close();
}
}
}
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlValidatingReader^ reader = nullptr;
XmlTextReader^ txtreader = nullptr;
try
{
//Create and load the XmlTextReader with the XML file.
txtreader = gcnew XmlTextReader( "book1.xml" );
txtreader->WhitespaceHandling = WhitespaceHandling::None;
//Create the XmlValidatingReader over the XmlTextReader.
//Set the reader to not expand general entities.
reader = gcnew XmlValidatingReader( txtreader );
reader->ValidationType = ValidationType::None;
reader->EntityHandling = EntityHandling::ExpandCharEntities;
reader->MoveToContent(); //Move to the root element.
reader->Read(); //Move to title start tag.
reader->Skip(); //Skip the title element.
//Read the misc start tag. The reader is now positioned on
//the entity reference node.
reader->ReadStartElement();
//Because EntityHandling is set to ExpandCharEntities, you must call
//ResolveEntity to expand the entity. The entity replacement text is
//then parsed and returned as a child node.
Console::WriteLine( "Expand the entity..." );
reader->ResolveEntity();
Console::WriteLine( "The entity replacement text is returned as a text node." );
reader->Read();
Console::WriteLine( "NodeType: {0} Value: {1}", reader->NodeType, reader->Value );
Console::WriteLine( "An EndEntity node closes the entity reference scope." );
reader->Read();
Console::WriteLine( "NodeType: {0} Name: {1}", reader->NodeType, reader->Name );
}
finally
{
if ( reader != nullptr )
reader->Close();
}
}
import System.*;
import System.IO.*;
import System.Xml.*;
public class Sample
{
public static void main(String[] args)
{
XmlValidatingReader reader = null;
XmlTextReader txtReader = null;
try {
//Create and load the XmlTextReader with the XML file.
txtReader = new XmlTextReader("book1.xml");
txtReader.set_WhitespaceHandling(WhitespaceHandling.None);
//Create the XmlValidatingReader over the XmlTextReader.
//Set the reader to not expand general entities.
reader = new XmlValidatingReader(txtReader);
reader.set_ValidationType(ValidationType.None);
reader.set_EntityHandling(EntityHandling.ExpandCharEntities);
reader.MoveToContent(); //Move to the root element.
reader.Read(); //Move to title start tag.
reader.Skip(); //Skip the title element.
//Read the misc start tag. The reader is now positioned on
//the entity reference node.
reader.ReadStartElement();
//Because EntityHandling is set to ExpandCharEntities, you
//must call ResolveEntity to expand the entity. The entity
//replacement text is then parsed and returned as a child node.
Console.WriteLine("Expand the entity...");
reader.ResolveEntity();
Console.WriteLine("The entity replacement text is "
+ "returned as a text node.");
reader.Read();
Console.WriteLine("NodeType: {0} Value: {1}",
reader.get_NodeType(), reader.get_Value());
Console.WriteLine("An EndEntity node closes the entity "
+ " reference scope.");
reader.Read();
Console.WriteLine("NodeType: {0} Name: {1}", reader.get_NodeType(),
reader.get_Name());
}
finally {
if (reader != null) {
reader.Close();
}
}
} //main
} //Sample
Im Beispiel wird die Datei book1.xml als Eingabe verwendet.
<?xml version='1.0' ?>
<!DOCTYPE book [<!ENTITY h 'hardcover'>]>
<book>
<title>Pride And Prejudice</title>
<misc>&h;</misc>
</book>
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
XmlValidatingReader-Klasse
XmlValidatingReader-Member
System.Xml-Namespace