Freigeben über


XmlValidatingReader.ResolveEntity-Methode

Löst den Entitätsverweis für EntityReference-Knoten auf.

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

Syntax

'Declaration
Public Overrides Sub ResolveEntity
'Usage
Dim instance As XmlValidatingReader

instance.ResolveEntity
public override void ResolveEntity ()
public:
virtual void ResolveEntity () override
public void ResolveEntity ()
public override function ResolveEntity ()

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Der Reader ist nicht auf einem EntityReference-Knoten positioniert.

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".

Wenn der Reader auf einem EntityReference-Knoten (XmlNodeType.EntityReference) positioniert ist, wird bei einem Aufruf von Read nach dem Aufruf dieser Methode der Ersetzungstext für die Entität analysiert. Wenn die Analyse des Ersetzungstextes für die Entität abgeschlossen ist, wird ein EndEntity-Knoten zurückgegeben, um den Gültigkeitsbereich des Entitätsverweises zu schließen.

Hinweis

Wenn die Entität Teil eines Attributwerts ist, müssen Sie nach dem Aufruf dieser Methode ReadAttributeValue für den Einsprung in die Entität aufrufen.

Beispiel

Im folgenden Beispiel wird ResolveEntity 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
EntityHandling-Enumeration

Weitere Ressourcen

Lesen von XML mit dem "XmlReader"