XmlDocument.CreateEntityReference(String) Método

Definição

Cria um XmlEntityReference com o nome especificado.

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

Parâmetros

name
String

O nome da entidade faz referência.

Devoluções

O novo XmlEntityReference.

Exceções

O nome é inválido (por exemplo, nomes que começam por '#' são inválidos).

Exemplos

O exemplo seguinte cria dois nós de referência de entidade e insere-os num documento XML.

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

Observações

Se a entidade referenciada for conhecida, a lista de filhos do XmlEntityReference nó é feita igual à do nó correspondente XmlEntity .

Os espaços de nomes usados no texto de substituição para a referência da entidade são limitados no momento em que o pai do nó de referência da entidade é definido pela primeira vez (por exemplo, quando o nó de referência da entidade é inserido no documento). Por exemplo, dada a seguinte entidade:

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

Se ligar CreateEntityReference("a")para , recebe de volta um único nó do tipo EntityReference sem filhos. Se adicionar este nó como filho do nó seguinte, <item xmlns="urn:1"/>, então, no momento da chamada AppendChild, o pai do nó de referência da entidade recém-criado é definido e os filhos são expandidos neste contexto de espaço de nomes. O nó b de elemento filho terá NamespaceURI igual a urn:1. Os nós filhos da referência à entidade mantêm-se iguais mesmo que movas a referência da entidade para um local no documento que tenha um contexto de namespace padrão diferente. Isto não acontece para nós de referência de entidade existentes quando os remove e insere, ou para referências de entidades que clona com CloneNode. Só acontece para referências de entidades recém-criadas.

Se a entidade correspondente não estiver definida no DocumentType quando o nó de referência da entidade for adicionado, porque a referência da entidade não está definida, o seu único nó filho será um nó de texto vazio.

As entidades incorporadas amp, lt, gt, apos e quot também são permitidas, e terão um nó de texto filho com o valor de carácter expandido apropriado.

Embora este método crie o novo objeto no contexto do documento, não adiciona automaticamente o novo objeto à árvore do documento. Para adicionar o novo objeto, deve chamar explicitamente um dos métodos de inserção de nó.

De acordo com a recomendação W3C Extensible Markup Language (XML) 1.0, os nós EntityReference só são permitidos dentro dos nós Element, Attribute e EntityReference.

Aplica-se a