XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) Method

정의

지정된 이름을 가진 XmlEntityReference를 만듭니다.Creates an XmlEntityReference with the specified name.

public:
 virtual System::Xml::XmlEntityReference ^ CreateEntityReference(System::String ^ name);
public virtual System.Xml.XmlEntityReference CreateEntityReference (string name);
abstract member CreateEntityReference : string -> System.Xml.XmlEntityReference
override this.CreateEntityReference : string -> System.Xml.XmlEntityReference
Public Overridable Function CreateEntityReference (name As String) As XmlEntityReference

매개 변수

name
String String String String

엔터티 참조의 이름입니다.The name of the entity reference.

반환

XmlEntityReference입니다.The new XmlEntityReference.

예외

이름이 잘못되었습니다(예: '#'으로 시작하는 이름은 올바르지 않음).The name is invalid (for example, names starting with'#' are invalid.)

예제

다음 예제에서는 두 엔터티 참조 노드를 만들고 XML 문서에 삽입 합니다.The following example creates two entity reference nodes and inserts them into an XML document.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   
   //Create the XmlDocument.
   XmlDocument^ doc = gcnew XmlDocument;
   doc->LoadXml( "<!DOCTYPE book [<!ENTITY h 'hardcover'>]><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title><misc/></book>" );
   
   //Create an entity reference node. The child count should be 0 
   //since the node has not been expanded.
   XmlEntityReference^ entityref = doc->CreateEntityReference( "h" );
   Console::WriteLine( entityref->ChildNodes->Count );
   
   //After the node has been added to the document, its parent node
   //is set and the entity reference node is expanded.  It now has a child
   //node containing the entity replacement text. 
   doc->DocumentElement->LastChild->AppendChild( entityref );
   Console::WriteLine( entityref->FirstChild->InnerText );
   
   //Create and insert an undefined entity reference node.  When the entity
   //reference node is expanded, because the entity reference is undefined
   //the child is an empty text node.
   XmlEntityReference^ entityref2 = doc->CreateEntityReference( "p" );
   doc->DocumentElement->LastChild->AppendChild( entityref2 );
   Console::WriteLine( entityref2->FirstChild->InnerText );
}

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

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'hardcover'>]>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "<misc/>" +
                "</book>"); 

    //Create an entity reference node. The child count should be 0 
    //since the node has not been expanded.
    XmlEntityReference entityref = doc.CreateEntityReference("h");
    Console.WriteLine(entityref.ChildNodes.Count ); 

    //After the node has been added to the document, its parent node
    //is set and the entity reference node is expanded.  It now has a child
    //node containing the entity replacement text. 
    doc.DocumentElement.LastChild.AppendChild(entityref);
    Console.WriteLine(entityref.FirstChild.InnerText);

    //Create and insert an undefined entity reference node.  When the entity
    //reference node is expanded, because the entity reference is undefined
    //the child is an empty text node.
    XmlEntityReference entityref2 = doc.CreateEntityReference("p");
    doc.DocumentElement.LastChild.AppendChild(entityref2);
    Console.WriteLine(entityref2.FirstChild.InnerText);
    
  }
}
Option Explicit
Option Strict

Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create the XmlDocument.
        Dim doc As New XmlDocument()
        doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'hardcover'>]>" & _
                    "<book genre='novel' ISBN='1-861001-57-5'>"  & _
                    "<title>Pride And Prejudice</title>"  & _
                    "<misc/>"  & _
                    "</book>")
        
        'Create an entity reference node. The child count should be 0 
        'since the node has not been expanded.
        Dim entityref As XmlEntityReference = doc.CreateEntityReference("h")
        Console.WriteLine(entityref.ChildNodes.Count)
        
        'After the node has been added to the document, its parent node
        'is set and the entity reference node is expanded.  It now has a child
        'node containing the entity replacement text. 
        doc.DocumentElement.LastChild.AppendChild(entityref)
        Console.WriteLine(entityref.FirstChild.InnerText)
        
        'Create and insert an undefined entity reference node.  When the entity
        'reference node is expanded, because the entity reference is undefined
        'the child is an empty text node.
        Dim entityref2 As XmlEntityReference = doc.CreateEntityReference("p")
        doc.DocumentElement.LastChild.AppendChild(entityref2)
        Console.WriteLine(entityref2.FirstChild.InnerText)
    End Sub 'Main 
End Class 'Sample

설명

경우 참조 된 엔터티가 알려져의 자식 목록 합니다 XmlEntityReference 노드에 해당 하는 동일 이루어집니다 XmlEntity 노드.If the referenced entity is known, the child list of the XmlEntityReference node is made the same as that of the corresponding XmlEntity node.

엔터티 참조에 대 한 대체 텍스트에서 사용 된 네임 스페이스 (예를 들어, 엔터티 참조 노드를 삽입할 때 문서에) 엔터티 참조 노드의 부모 먼저 설정 시간에 바인딩됩니다.The namespaces used in the replacement text for the entity reference are bound at the time the parent of the entity reference node is first set (for example, when the entity reference node is inserted into the document). 예를 들어 다음 엔터티:For example, given the following entity:

<!ENTITY a "<b>test</b>">  

호출 하는 경우 CreateEntityReference("a") 받게 EntityReference 형식의 단일 노드 자식이 없는 합니다.If you call CreateEntityReference("a") you get back a single node of type EntityReference with no children. 다음 노드를 자식으로이 노드를 추가 하는 경우If you append this node as a child of the following node,

<item xmlns="urn:1"/>  

호출 시 다음 AppendChild, 새로 만든된 엔터티 참조 노드의 부모 설정 되 고이 네임 스페이스 컨텍스트에서 자식을 확장 됩니다.then, at the time of calling AppendChild, the parent of the newly created entity reference node is set and the children are expanded in this namespace context. 자식 요소 노드의 b NamespaceURI 같음 해야 urn:1합니다.The child element node b will have NamespaceURI equal to urn:1. 엔터티 참조의 자식 노드가 엔터티 참조에는 다른 기본 네임 스페이스 컨텍스트가 있는 문서의 위치를 이동 하는 경우에 동일 합니다.The child nodes of the entity reference remain the same even if you move the entity reference to a place in the document that has a different default namespace context. 이 발생 하지 않습니다 기존 엔터티 참조 노드를 사용 하 여 복제 하는 엔터티 참조 또는 제거 하 고 삽입할 때 CloneNode합니다.This does not happen for existing entity reference nodes when you remove and insert them or for entity references that you clone with CloneNode. 새로 만든된 엔터티 참조에만 발생합니다.It only happens for newly created entity references.

해당 엔터티를 정의 하지 않은 DocumentType에서 엔터티 참조 노드를 추가 하면 엔터티 참조가 정의 되어 있지 않으므로 해당 유일한 자식 노드가 빈 텍스트 노드가 됩니다.If the corresponding entity is not defined in the DocumentType when the entity reference node is added, because the entity reference is not defined, its only child node will be an empty text node.

기본 제공 엔터티 amp, lt, gt, a p o s, 및 q u o t도 허용 됩니다 하 고 적절 한 확장 된 문자 값을 가진 자식 텍스트 노드를 갖게 됩니다.The built-in entities amp, lt, gt, apos, and quot are also allowed, and they will have a child text node with the appropriate expanded character value.

이 메서드가 문서의 컨텍스트에서 새 개체를 만들고, 있지만 추가 되지 않습니다 자동으로 새 개체를 문서 트리에입니다.Although this method creates the new object in the context of the document, it does not automatically add the new object to the document tree. 새 개체를 추가 하려면 명시적으로 노드 삽입 메서드 중 하나가 호출 해야 합니다.To add the new object, you must explicitly call one of the node insert methods.

W3C에 따라 Extensible Markup Language (XML) 1.0 권장 사항, EntityReference 노드는 요소, 특성 및 EntityReference 노드 내 에서만 허용 됩니다.According to the W3C Extensible Markup Language (XML) 1.0 recommendation, EntityReference nodes are only allowed within Element, Attribute and EntityReference nodes.

적용 대상