XmlDocument.CreateEntityReference(String) Méthode

Définition

Crée un élément XmlEntityReference avec le nom spécifié.

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ètres

name
String

Nom de la référence d'entité.

Retours

XmlEntityReference

Nouvelle XmlEntityReference.

Exceptions

Le nom n’est pas valide (par exemple, les noms commençant par « # » ne sont pas valides).

Exemples

L’exemple suivant crée deux nœuds de référence d’entité et les insère dans un document XML.

#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

Remarques

Si l’entité référencée est connue, la liste enfant du XmlEntityReference nœud est faite de la même façon que celle du nœud correspondant XmlEntity .

Les espaces de noms utilisés dans le texte de remplacement de la référence d’entité sont liés au moment où le parent du nœud de référence d’entité est défini pour la première fois (par exemple, lorsque le nœud de référence d’entité est inséré dans le document). Par exemple, étant donné l’entité suivante :

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

Si vous appelez CreateEntityReference("a") que vous récupérez un seul nœud de type EntityReference sans enfant. Si vous ajoutez ce nœud en tant qu’enfant du nœud suivant,

<item xmlns="urn:1"/>  

puis, au moment de l’appel AppendChild, le parent du nœud de référence d’entité nouvellement créé est défini et les enfants sont développés dans ce contexte d’espace de noms. Le nœud b d’élément enfant aura NamespaceURI égal à urn:1. Les nœuds enfants de la référence d’entité restent identiques même si vous déplacez la référence d’entité vers un emplacement dans le document qui a un contexte d’espace de noms par défaut différent. Cela ne se produit pas pour les nœuds de référence d’entité existants lorsque vous les supprimez et les insérez ou pour les références d’entité que vous clonez avec CloneNode. Cela se produit uniquement pour les références d’entité nouvellement créées.

Si l’entité correspondante n’est pas définie dans DocumentType lorsque le nœud de référence d’entité est ajouté, car la référence d’entité n’est pas définie, son seul nœud enfant est un nœud de texte vide.

Les entités intégrées amp, lt, gt, apos et quot sont également autorisées, et elles auront un nœud de texte enfant avec la valeur de caractère développée appropriée.

Bien que cette méthode crée le nouvel objet dans le contexte du document, il n’ajoute pas automatiquement le nouvel objet à l’arborescence de documents. Pour ajouter le nouvel objet, vous devez appeler explicitement l’une des méthodes d’insertion de nœud.

Selon la recommandation W3C Extensible Markup Language (XML) 1.0, les nœuds EntityReference sont autorisés uniquement dans les nœuds Element, Attribute et EntityReference.

S’applique à