XmlDocument.CreateEntityReference(String) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Skapar en XmlEntityReference med det angivna namnet.
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
Parametrar
- name
- String
Namnet på entitetsreferensen.
Returer
Den nya XmlEntityReference.
Undantag
Namnet är ogiltigt (till exempel är namn som börjar med'#' ogiltiga.)
Exempel
I följande exempel skapas två entitetsreferensnoder och de infogas i ett XML-dokument.
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
Kommentarer
Om den refererade entiteten är känd görs den underordnade listan över XmlEntityReference noden på samma sätt som motsvarande XmlEntity nod.
De namnområden som används i ersättningstexten för entitetsreferensen är bundna när den överordnade entitetsreferensnoden först anges (till exempel när entitetsreferensnoden infogas i dokumentet). Till exempel med följande entitet:
<!ENTITY a "<b>test</b>">
Om du anropar CreateEntityReference("a")får du tillbaka en enskild nod av typen EntityReference utan underordnade. Om du lägger till den här noden som underordnad följande nod <item xmlns="urn:1"/>, , vid tidpunkten för anropet AppendChild, anges överordnad för den nyligen skapade entitetsreferensnoden och underordnade objekt expanderas i den här namnområdeskontexten. Den underordnade elementnoden b har NamespaceURI lika med urn:1. De underordnade noderna i entitetsreferensen förblir desamma även om du flyttar entitetsreferensen till en plats i dokumentet som har en annan standardnamnområdeskontext. Detta sker inte för befintliga entitetsreferensnoder när du tar bort och infogar dem eller för entitetsreferenser som du klonar med CloneNode. Det sker bara för nyligen skapade entitetsreferenser.
Om motsvarande entitet inte definieras i DocumentType när entitetsreferensnoden läggs till, eftersom entitetsreferensen inte har definierats, är dess enda underordnade nod en tom textnod.
De inbyggda entiteterna amp, lt, gt, apos och quot tillåts också, och de har en underordnad textnod med lämpligt expanderat teckenvärde.
Även om den här metoden skapar det nya objektet i dokumentets kontext, lägger det inte automatiskt till det nya objektet i dokumentträdet. Om du vill lägga till det nya objektet måste du uttryckligen anropa någon av nodinfogningsmetoderna.
Enligt rekommendationen W3C Extensible Markup Language (XML) 1.0 tillåts EntityReference-noder endast inom noderna Element, Attribut och EntityReference.