XmlDocument.CreateEntityReference(String) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
XmlEntityReference Membuat dengan nama yang ditentukan.
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
Parameter
- name
- String
Nama referensi entitas.
Mengembalikan
Yang baru XmlEntityReference.
Pengecualian
Nama tidak valid (misalnya, nama yang dimulai dengan'#' tidak valid.)
Contoh
Contoh berikut membuat dua simpul referensi entitas dan menyisipkannya ke dalam dokumen XML.
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
Keterangan
Jika entitas yang dirujuk diketahui, daftar anak simpul XmlEntityReference dibuat sama dengan node yang sesuai XmlEntity .
Namespace yang digunakan dalam teks pengganti untuk referensi entitas terikat pada saat induk simpul referensi entitas pertama kali diatur (misalnya, ketika node referensi entitas dimasukkan ke dalam dokumen). Misalnya, mengingat entitas berikut:
<!ENTITY a "<b>test</b>">
Jika Anda memanggil CreateEntityReference("a"), Anda mendapatkan kembali satu node jenis EntityReference tanpa turunan. Jika Anda menambahkan simpul ini sebagai anak dari simpul berikut, <item xmlns="urn:1"/>, maka, pada saat panggilan AppendChild, induk simpul referensi entitas yang baru dibuat diatur dan turunan diperluas dalam konteks namespace ini. Simpul elemen turunan b akan memiliki NamespaceURI sama dengan urn:1. Simpul anak dari referensi entitas tetap sama meskipun Anda memindahkan referensi entitas ke tempat dalam dokumen yang memiliki konteks namespace default yang berbeda. Ini tidak terjadi untuk simpul referensi entitas yang ada saat Anda menghapus dan menyisipkannya atau untuk referensi entitas yang Anda kloning dengan CloneNode. Ini hanya terjadi untuk referensi entitas yang baru dibuat.
Jika entitas yang sesuai tidak ditentukan dalam DocumentType saat node referensi entitas ditambahkan, karena referensi entitas tidak ditentukan, satu-satunya simpul anaknya akan menjadi simpul teks kosong.
Entitas bawaan amp, lt, gt, apos, dan quot juga diizinkan, dan mereka akan memiliki simpul teks anak dengan nilai karakter yang diperluas yang sesuai.
Meskipun metode ini membuat objek baru dalam konteks dokumen, metode ini tidak secara otomatis menambahkan objek baru ke pohon dokumen. Untuk menambahkan objek baru, Anda harus secara eksplisit memanggil salah satu metode sisipan simpul.
Menurut rekomendasi W3C Extensible Markup Language (XML) 1.0, simpul EntityReference hanya diizinkan dalam node Element, Attribute, dan EntityReference.