XmlDocument.CreateEntityReference(String) Yöntem

Tanım

Belirtilen ada sahip bir XmlEntityReference oluşturur.

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

Parametreler

name
String

Varlık başvurusunun adı.

Döndürülenler

XmlEntityReference

Yeni XmlEntityReference.

Özel durumlar

Ad geçersiz (örneğin, '#' ile başlayan adlar geçersizdir.)

Örnekler

Aşağıdaki örnek iki varlık başvuru düğümü oluşturur ve bunları bir XML belgesine ekler.

#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.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
End Class

Açıklamalar

Başvuruda bulunulan varlık biliniyorsa, düğümün XmlEntityReference alt listesi ilgili XmlEntity düğümün alt listesiyle aynı yapılır.

Varlık başvurusunun değiştirme metninde kullanılan ad alanları, varlık başvuru düğümünün üst öğesi ilk kez ayarlandığında (örneğin, varlık başvuru düğümü belgeye eklendiğinde) bağlanır. Örneğin, aşağıdaki varlık göz önünde bulundurulduğunda:

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

Çağırırsanız CreateEntityReference("a") , alt öğe içermeyen EntityReference türünde tek bir düğümü geri alırsınız. Bu düğümü aşağıdaki düğümün alt öğesi olarak eklerseniz,

<item xmlns="urn:1"/>  

çağrısı yapılırken AppendChildyeni oluşturulan varlık başvuru düğümünün üst öğesi ayarlanır ve alt öğeler bu ad alanı bağlamında genişletilir. Alt öğe düğümüne b eşit urn:1NamespaceURI olacaktır. Varlık başvuruyu belgede farklı bir varsayılan ad alanı bağlamı olan bir yere taşısanız bile varlık başvurusunun alt düğümleri aynı kalır. Varolan varlık başvuru düğümlerini kaldırıp eklediğinizde veya ile CloneNodekopyaladığınız varlık başvuruları için bu durum gerçekleşmez. Bu yalnızca yeni oluşturulan varlık başvuruları için gerçekleşir.

Varlık başvurusu düğümü eklendiğinde ilgili varlık DocumentType içinde tanımlanmamışsa, varlık başvurusu tanımlanmadığından, tek alt düğümü boş bir metin düğümü olur.

Yerleşik varlıklar amp, lt, gt,pos ve quot'a da izin verilir ve uygun genişletilmiş karakter değerine sahip bir alt metin düğümüne sahip olurlar.

Bu yöntem yeni nesneyi belge bağlamında oluştursa da, yeni nesneyi belge ağacına otomatik olarak eklemez. Yeni nesneyi eklemek için düğüm ekleme yöntemlerinden birini açıkça çağırmanız gerekir.

W3C Genişletilebilir Biçimlendirme Dili (XML) 1.0 önerisine göre, EntityReference düğümlerine yalnızca Öğe, Öznitelik ve EntityReference düğümleri içinde izin verilir.

Şunlara uygulanır