XmlDocument.CreateEntityReference(String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.