XmlNodeReader.ResolveEntity メソッド

定義

EntityReference ノードのエンティティ参照を解決します。Resolves the entity reference for EntityReference nodes.

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

例外

リーダーが EntityReference ノードに配置されていません。The reader is not positioned on an EntityReference node.

次の例では、を使用して ResolveEntity 、一般的なエンティティを展開します。The following example uses ResolveEntity to expand a general entity.

#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 ます。In the .NET Framework 2.0, the recommended practice is to create XmlReader instances using the XmlReaderSettings class and the Create method. これにより、.NET Framework で導入されたすべての新機能を最大限に活用することができます。This allows you to take full advantage of all the new features introduced in the .NET Framework. 詳細については、リファレンスページの「解説」を参照してください XmlReaderFor more information, see the Remarks section in the XmlReader reference page.

リーダーがノード () 上に配置されている場合 EntityReference XmlNodeType.EntityReferenceRead このメソッドの呼び出し後にが呼び出されると、エンティティの置換テキストが解析されます。If the reader is positioned on an EntityReference node (XmlNodeType.EntityReference), if Read is called after calling this method, the entity replacement text is parsed. エンティティの置換テキストが終了すると、 EndEntity ノードが返され、エンティティ参照スコープが閉じられます。When the entity replacement text is finished, an EndEntity node is returned to close the entity reference scope.

注意

このメソッドを呼び出した後、エンティティが属性値の一部である場合は、 ReadAttributeValue を呼び出してエンティティにステップインする必要があります。After calling this method, if the entity is part of an attribute value, you must call ReadAttributeValue to step into the entity.

適用対象