XmlDocument.CreateEntityReference(String) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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:1
NamespaceURI 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.