XmlDocument.CreateEntityReference(String) Methode

Definitie

Hiermee maakt u een XmlEntityReference met de opgegeven naam.

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

Parameters

name
String

De naam van de entiteitsreferentie.

Retouren

Het nieuwe XmlEntityReference.

Uitzonderingen

De naam is ongeldig (bijvoorbeeld namen die beginnen met '#' zijn ongeldig.)

Voorbeelden

In het volgende voorbeeld worden twee entiteitsreferentieknooppunten gemaakt en ingevoegd in een XML-document.

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

Opmerkingen

Als de entiteit waarnaar wordt verwezen bekend is, wordt de onderliggende lijst van het XmlEntityReference knooppunt hetzelfde gemaakt als die van het bijbehorende XmlEntity knooppunt.

De naamruimten die worden gebruikt in de vervangende tekst voor de entiteitsverwijzing, zijn gebonden op het moment dat het bovenliggende knooppunt van het entiteitsverwijzingsknooppunt voor het eerst wordt ingesteld (bijvoorbeeld wanneer het knooppunt voor entiteitsverwijzingen in het document wordt ingevoegd). Bijvoorbeeld, op basis van de volgende entiteit:

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

Als u aanroept CreateEntityReference("a"), krijgt u één knooppunt van het type EntityReference zonder onderliggende items terug. Als u dit knooppunt toevoegt als onderliggend element van het volgende knooppunt, <item xmlns="urn:1"/>wordt op het moment van aanroepen AppendChildhet bovenliggende knooppunt van het zojuist gemaakte entiteitsreferentieknooppunt ingesteld en worden de onderliggende items uitgebreid in deze naamruimtecontext. Het onderliggende elementknooppunt b heeft naamruimte-URI gelijk aan urn:1. De onderliggende knooppunten van de entiteitsreferentie blijven hetzelfde, zelfs als u de entiteitsreferentie verplaatst naar een plaats in het document met een andere standaardnaamruimtecontext. Dit gebeurt niet voor bestaande entiteitsverwijzingsknooppunten wanneer u deze verwijdert en invoegt of voor entiteitsverwijzingen waarmee CloneNodeu kloont. Dit gebeurt alleen voor nieuw gemaakte entiteitsverwijzingen.

Als de bijbehorende entiteit niet is gedefinieerd in documenttype wanneer het knooppunt voor de entiteitsreferentie wordt toegevoegd, omdat de entiteitsreferentie niet is gedefinieerd, is het enige onderliggende knooppunt een leeg tekstknooppunt.

De ingebouwde entiteiten amp, lt, gt, apos en quot zijn ook toegestaan en ze hebben een onderliggend tekstknooppunt met de juiste uitgevouwen tekenwaarde.

Hoewel met deze methode het nieuwe object wordt gemaakt in de context van het document, wordt het nieuwe object niet automatisch toegevoegd aan de documentstructuur. Als u het nieuwe object wilt toevoegen, moet u expliciet een van de methoden voor het invoegen van knooppunten aanroepen.

Volgens de aanbeveling W3C Extensible Markup Language (XML) 1.0 zijn EntityReference-knooppunten alleen toegestaan binnen knooppunten Element, Kenmerk en EntityReference.

Van toepassing op