XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) Method

Definition

Erstellt eine XmlEntityReference mit dem angegebenen Namen.Creates an XmlEntityReference with the specified name.

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 String String String

Der Name des Entitätsverweises.The name of the entity reference.

Gibt zurück

Die neue XmlEntityReference.The new XmlEntityReference.

Ausnahmen

Der Name ist ungültig (z. B. sind Namen ungültig, die mit "#" beginnen.)The name is invalid (for example, names starting with'#' are invalid.)

Beispiele

Im folgenden Beispiel werden zwei Entitäts Verweis Knoten erstellt und in ein XML-Dokument eingefügt.The following example creates two entity reference nodes and inserts them into an XML document.

#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

Hinweise

Wenn die Entität, auf die verwiesen wird, bekannt ist XmlEntityReference , wird die untergeordnete Liste des Knotens mit XmlEntity der des entsprechenden Knotens identisch.If the referenced entity is known, the child list of the XmlEntityReference node is made the same as that of the corresponding XmlEntity node.

Die im Ersetzungstext für den Entitäts Verweis verwendeten Namespaces werden an den Zeitpunkt gebunden, an dem das übergeordnete Element des Entitäts Verweis Knotens zuerst festgelegt wird (z. b. wenn der Entitäts Verweis Knoten in das Dokument eingefügt wird).The namespaces used in the replacement text for the entity reference are bound at the time the parent of the entity reference node is first set (for example, when the entity reference node is inserted into the document). Angenommen, Sie haben die folgende Entität:For example, given the following entity:

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

Wenn Sie anrufen CreateEntityReference("a") , erhalten Sie einen einzelnen Knoten vom Typ EntityReference ohne untergeordnete Elemente.If you call CreateEntityReference("a") you get back a single node of type EntityReference with no children. Wenn Sie diesen Knoten als untergeordnetes Element des folgenden Knotens anfügen,If you append this node as a child of the following node,

<item xmlns="urn:1"/>  

zum Zeitpunkt des Aufrufs AppendChildvon wird das übergeordnete Element des neu erstellten Entitäts Verweis Knotens festgelegt, und die untergeordneten Elemente werden in diesem Namespace Kontext erweitert.then, at the time of calling AppendChild, the parent of the newly created entity reference node is set and the children are expanded in this namespace context. b Fürurn:1den untergeordneten Elementknoten ist "NamespaceURI" gleich.The child element node b will have NamespaceURI equal to urn:1. Die untergeordneten Knoten des Entitäts Verweises bleiben unverändert, auch wenn Sie den Entitäts Verweis an eine Stelle im Dokument mit einem anderen Standard Namespace Kontext verschieben.The child nodes of the entity reference remain the same even if you move the entity reference to a place in the document that has a different default namespace context. Dies geschieht nicht für vorhandene Entitäts Verweis Knoten, wenn Sie Sie entfernen und Einfügen oder für Entitäts Verweise, die CloneNodemit geklont werden.This does not happen for existing entity reference nodes when you remove and insert them or for entity references that you clone with CloneNode. Dies geschieht nur bei neu erstellten Entitäts verweisen.It only happens for newly created entity references.

Wenn die entsprechende Entität beim Hinzufügen des Entitäts Verweis Knotens nicht in DocumentType definiert ist, ist der einzige untergeordnete Knoten ein leerer Textknoten, da der Entitäts Verweis nicht definiert ist.If the corresponding entity is not defined in the DocumentType when the entity reference node is added, because the entity reference is not defined, its only child node will be an empty text node.

Die integrierten Entitäten amp, lt, gt, apos und quot sind ebenfalls zulässig, und Sie verfügen über einen untergeordneten Textknoten mit dem entsprechenden erweiterten Zeichen Wert.The built-in entities amp, lt, gt, apos, and quot are also allowed, and they will have a child text node with the appropriate expanded character value.

Obwohl diese Methode das neue-Objekt im Kontext des Dokuments erstellt, wird das neue-Objekt nicht automatisch der Dokumentstruktur hinzugefügt.Although this method creates the new object in the context of the document, it does not automatically add the new object to the document tree. Um das neue-Objekt hinzuzufügen, müssen Sie explizit eine der Knoten Einfügemethoden aufzurufen.To add the new object, you must explicitly call one of the node insert methods.

Gemäß der Empfehlung W3C Extensible Markup Language (XML) 1,0sind EntityReference-Knoten nur innerhalb der Knoten Element, Attribute und EntityReference zulässig.According to the W3C Extensible Markup Language (XML) 1.0 recommendation, EntityReference nodes are only allowed within Element, Attribute and EntityReference nodes.

Gilt für: