XmlDocument.CreateEntityReference(String) Metódus

Definíció

Létrehoz egy XmlEntityReference megadott névvel rendelkezőt.

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

Paraméterek

name
String

Az entitáshivatkozás neve.

Válaszok

Az új XmlEntityReference.

Kivételek

A név érvénytelen (például a"#" kezdetű nevek érvénytelenek).)

Példák

Az alábbi példa két entitáshivatkozási csomópontot hoz létre, és beszúrja őket egy XML-dokumentumba.

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

Megjegyzések

Ha a hivatkozott entitás ismert, a csomópont gyermeklistája XmlEntityReference megegyezik a megfelelő XmlEntity csomópont gyermeklistájával.

Az entitáshivatkozás helyettesítő szövegében használt névterek az entitás-referenciacsomópont szülőjének beállításakor vannak megkötve (például amikor az entitás-referenciacsomópont be van szúrva a dokumentumba). Például a következő entitást tekintve:

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

Hívás esetén CreateEntityReference("a")egyetlen EntityReference típusú csomópontot kap vissza gyermek nélkül. Ha ezt a csomópontot a következő csomópont gyermekeként fűzi hozzá, <item xmlns="urn:1"/>akkor a híváskor AppendChildbe van állítva az újonnan létrehozott entitás-referenciacsomópont szülője, a gyermekek pedig ebben a névtérkörnyezetben lesznek kibontva. A gyermekelem-csomópont b névtérURI-értéke megegyezik a következővel urn:1: . Az entitáshivatkozás gyermekcsomópontjai akkor is változatlanok maradnak, ha az entitáshivatkozást egy másik alapértelmezett névtérkörnyezettel rendelkező helyre helyezi át. Ez nem történik meg a meglévő entitás-referenciacsomópontok esetében, amikor eltávolítja és beszúrja őket, vagy a klónozott CloneNodeentitáshivatkozások esetében. Ez csak újonnan létrehozott entitáshivatkozások esetén fordul elő.

Ha a megfelelő entitás nincs definiálva a DocumentType-ban az entitás-referenciacsomópont hozzáadásakor, mivel az entitáshivatkozás nincs definiálva, az egyetlen gyermekcsomópont egy üres szöveges csomópont lesz.

A beépített entitások erősítő, lt, gt, aposz és idézőjelek is engedélyezettek, és a megfelelő kibontott karakterértékkel rendelkező gyermekszöveg-csomóponttal rendelkeznek.

Bár ez a metódus a dokumentum kontextusában hozza létre az új objektumot, nem adja hozzá automatikusan az új objektumot a dokumentumfához. Az új objektum hozzáadásához explicit módon meg kell hívnia a csomópont beszúrási módszereinek egyikét.

A W3C Bővíthető korrektúranyelv (XML) 1.0-s javaslata szerint az EntityReference csomópontok csak elem-, attribútum- és EntityReference-csomópontokon belül engedélyezettek.

A következőre érvényes: