Freigeben über


XmlDocument.CreateEntityReference-Methode

Erstellt eine XmlEntityReference mit dem angegebenen Namen.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Overridable Function CreateEntityReference ( _
    name As String _
) As XmlEntityReference
'Usage
Dim instance As XmlDocument
Dim name As String
Dim returnValue As XmlEntityReference

returnValue = instance.CreateEntityReference(name)
public virtual XmlEntityReference CreateEntityReference (
    string name
)
public:
virtual XmlEntityReference^ CreateEntityReference (
    String^ name
)
public XmlEntityReference CreateEntityReference (
    String name
)
public function CreateEntityReference (
    name : String
) : XmlEntityReference

Parameter

  • name
    Der Name des Entitätsverweises.

Rückgabewert

Die neue XmlEntityReference.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

Der Name ist ungültig (mit # beginnende Namen sind z. B. ungültig).

Hinweise

Wenn der Entitätsverweis bekannt ist, wird die untergeordnete Liste des XmlEntityReference-Knotens mit der untergeordneten Liste des entsprechenden XmlEntity-Knotens in Übereinstimmung gebracht.

Die im Ersetzungstext für den Entitätsverweis verwendeten Namespaces werden gebunden, wenn das übergeordnete Element des Entitätsverweisknotens erstmals festgelegt wird (beispielsweise, wenn der Entitätsverweisknoten in das Dokument eingefügt wird). Beispielsweise bei folgender Entität:

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

Wenn Sie CreateEntityReference("a") aufrufen, erhalten Sie einen einzelnen Knoten vom Typ EntityReference ohne untergeordnete Elemente zurück. Wenn Sie diesen Knoten als untergeordnetes Element des folgenden Knotens anfügen,

<item xmlns="urn:1"/>

wird beim Aufruf von AppendChild das übergeordnete Element des neu erstellten Entitätsverweisknotens festgelegt, und die untergeordneten Elemente werden in diesem Namespacekontext erweitert. Der NamespaceURI des untergeordneten Elementknotens b ist gleich urn:1. Die untergeordneten Knoten des Entitätsverweises bleiben auch dann gleich, wenn Sie den Entitätsverweis auf eine Position im Dokument verschieben, die einen unterschiedlichen Standardnamespacekontext aufweist. Dies gilt nicht für vorhandene Entitätsverweisknoten, die entfernt oder eingefügt werden, oder für Entitätsverweise, die mit CloneNode geklont werden. Es gilt nur für neu erstellte Entitätsverweise.

Wenn die entsprechende Entität beim Hinzufügen des Entitätsverweisknotens nicht im DocumentType definiert ist, ist der einzige untergeordnete Knoten ein leerer Textknoten, da der Entitätsverweis nicht definiert ist.

Die integrierten Entitäten amp, lt, gt, apos und quot sind ebenfalls zulässig und verfügen über einen untergeordneten Textknoten mit dem entsprechenden Wert für erweiterte Zeichen.

Obwohl diese Methode das neue Objekt im Kontext des Dokuments erstellt, wird es nicht automatisch der Dokumentstruktur hinzugefügt. Rufen Sie eine der Methoden zum Einfügen von Knoten explizit auf, um das neue Objekt hinzuzufügen.

Entsprechend der W3C-Empfehlung Extensible Markup Language (XML) 1.0 (www.w3.org/TR/1998/REC-xml-19980210, nur auf Englisch verfügbar) sind EntityReference-Knoten nur in Element-, Attribute- und EntityReference-Knoten zulässig.

Beispiel

Im folgenden Beispiel werden zwei Entitätsverweisknoten erstellt und in ein XML-Dokument eingefügt.

Option Explicit
Option Strict

Imports System
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 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 'Main 
End Class 'Sample
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 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.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 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 );
}
import System.*;
import System.IO.*;
import System.Xml.*;

public class Sample
{
    public static void main(String[] args)
    {
        //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.get_ChildNodes().get_Count());

        //After the 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.get_DocumentElement().get_LastChild().AppendChild(entityRef);
        Console.WriteLine(entityRef.get_FirstChild().get_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.get_DocumentElement().get_LastChild().AppendChild(entityRef2);
        Console.WriteLine(entityRef2.get_FirstChild().get_InnerText());
    } //main
} //Sample

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

XmlDocument-Klasse
XmlDocument-Member
System.Xml-Namespace