Бөлісу құралы:


XmlNodeReader.ResolveEntity Метод

Определение

Разрешает ссылки на сущности для узлов EntityReference.

public:
 override void ResolveEntity();
public override void ResolveEntity ();
override this.ResolveEntity : unit -> unit
Public Overrides Sub ResolveEntity ()

Исключения

Средство чтения не расположено на узле EntityReference.

Примеры

В следующем примере используется ResolveEntity для расширения общей сущности.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlNodeReader^ reader = nullptr;
   try
   {
      
      //Create and load an XML document. 
      XmlDocument^ doc = gcnew XmlDocument;
      doc->LoadXml( "<!DOCTYPE book [<!ENTITY h 'hardcover'>]>"
      "<book>"
      "<title>Pride And Prejudice</title>"
      "<misc>&h;</misc>"
      "</book>" );
      
      //Create the reader.
      reader = gcnew XmlNodeReader( doc );
      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();
      
      //You must call ResolveEntity to expand the entity reference.
      //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();
   }

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

public class Sample
{
  public static void Main()
  {
     XmlNodeReader reader = null;

     try
     {
       //Create and load an XML document.
       XmlDocument doc = new XmlDocument();
       doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'hardcover'>]>" +
                   "<book>" +
                   "<title>Pride And Prejudice</title>" +
                   "<misc>&h;</misc>" +
                   "</book>");

       //Create the reader.
       reader = new XmlNodeReader(doc);

       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();

       //You must call ResolveEntity to expand the entity reference.
       //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();
    }
  }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        Dim reader As XmlNodeReader = Nothing
        
        Try
            'Create and load an XML document. 
            Dim doc As New XmlDocument()
            doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'hardcover'>]>" & _
                        "<book>" & _
                        "<title>Pride And Prejudice</title>" & _
                        "<misc>&h;</misc>" & _
                        "</book>")
            
            'Create the reader.
            reader = New XmlNodeReader(doc)
            
            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()
            
            'You must call ResolveEntity to expand the entity reference.
            '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
End Class

Комментарии

Примечание

В платформа .NET Framework 2.0 рекомендуется создавать XmlReader экземпляры с помощью XmlReaderSettings класса и Create метода. Это позволяет использовать все новые функции, представленные в платформа .NET Framework. Дополнительные сведения см. в разделе "Примечания" на XmlReader странице справки.

Если средство чтения размещено на EntityReference узле (XmlNodeType.EntityReference), если Read вызывается после вызова этого метода, анализируется текст замены сущности. После завершения замены сущности возвращается узел, EndEntity чтобы закрыть область ссылки на сущность.

Примечание

После вызова этого метода, если сущность является частью значения атрибута, необходимо вызвать шаг ReadAttributeValue в сущность.

Применяется к