XmlNodeReader.ResolveEntity 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
노드에 대한 엔터티 참조를 EntityReference 확인합니다.
public:
override void ResolveEntity();
public override void ResolveEntity();
override this.ResolveEntity : unit -> unit
Public Overrides Sub ResolveEntity ()
예외
판독기는 노드에 EntityReference 배치되지 않습니다.
예제
다음 예제에서는 일반 엔터티를 확장하는 데 사용합니다 ResolveEntity .
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
설명
메모
최신 기능을 활용하려면 클래스와 XmlReader 메서드를 사용하여 XmlReaderSettings 인스턴스를 만드는 Create 것이 좋습니다. 자세한 내용은 참조 페이지의 설명 섹션을 XmlReader 참조하세요.
판독기를 노드(EntityReference)에 XmlNodeType.EntityReference 배치하는 경우 이 메서드를 호출한 후 호출되면 Read 엔터티 대체 텍스트가 구문 분석됩니다. 엔터티 대체 텍스트가 완료되면 EndEntity 노드가 반환되어 엔터티 참조 범위를 닫습니다.
메모
이 메서드를 호출한 후 엔터티가 특성 값의 일부인 경우 엔터티를 한 단계씩 실행하도록 호출 ReadAttributeValue 해야 합니다.