XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) XmlDocument.CreateEntityReference(String) Method

定義

指定した名前を使用して、XmlEntityReference を作成します。Creates an XmlEntityReference with the specified name.

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

パラメーター

name
String String String String

エンティティ参照の名前。The name of the entity reference.

戻り値

新しい XmlEntityReferenceThe new XmlEntityReference.

例外

名前が正しくありません (たとえば、# で始まる名前は使用できません)The name is invalid (for example, names starting with'#' are invalid.)

次の例では、2つのエンティティ参照ノードを作成し、それらを XML ドキュメントに挿入します。The following example creates two entity reference nodes and inserts them into an XML document.

#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
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 'Main 
End Class 'Sample

注釈

参照先エンティティが認識されている場合、 XmlEntityReferenceノードの子リストは、対応するXmlEntityノードと同じになります。If the referenced entity is known, the child list of the XmlEntityReference node is made the same as that of the corresponding XmlEntity node.

エンティティ参照の置換テキストで使用される名前空間は、エンティティ参照ノードの親が最初に設定された時点でバインドされます (たとえば、エンティティ参照ノードがドキュメントに挿入された場合)。The namespaces used in the replacement text for the entity reference are bound at the time the parent of the entity reference node is first set (for example, when the entity reference node is inserted into the document). たとえば、次のエンティティがあるとします。For example, given the following entity:

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

を呼び出すCreateEntityReference("a")と、子を持たない型 EntityReference の単一のノードが返されます。If you call CreateEntityReference("a") you get back a single node of type EntityReference with no children. このノードを次のノードの子として追加すると、If you append this node as a child of the following node,

<item xmlns="urn:1"/>  

次に、を呼び出すAppendChildときに、新しく作成されたエンティティ参照ノードの親が設定され、この名前空間コンテキストで子が展開されます。then, at the time of calling AppendChild, the parent of the newly created entity reference node is set and the children are expanded in this namespace context. 子要素ノードbの NamespaceURI はと同じにurn:1なります。The child element node b will have NamespaceURI equal to urn:1. エンティティ参照を別の既定の名前空間コンテキストを持つドキュメント内の場所に移動しても、エンティティ参照の子ノードは変わりません。The child nodes of the entity reference remain the same even if you move the entity reference to a place in the document that has a different default namespace context. これは、既存のエンティティ参照ノードを削除して挿入した場合や、複製CloneNodeするエンティティ参照の場合には発生しません。This does not happen for existing entity reference nodes when you remove and insert them or for entity references that you clone with CloneNode. 新しく作成されたエンティティ参照に対してのみ発生します。It only happens for newly created entity references.

エンティティ参照ノードが追加されたときに、対応するエンティティが DocumentType で定義されていない場合、エンティティ参照が定義されていないため、その唯一の子ノードは空のテキストノードになります。If the corresponding entity is not defined in the DocumentType when the entity reference node is added, because the entity reference is not defined, its only child node will be an empty text node.

組み込みのエンティティ amp、lt、gt、apos、および quot も許可されており、適切な拡張文字値を持つ子テキストノードがあります。The built-in entities amp, lt, gt, apos, and quot are also allowed, and they will have a child text node with the appropriate expanded character value.

このメソッドでは、ドキュメントのコンテキストで新しいオブジェクトが作成されますが、新しいオブジェクトがドキュメントツリーに自動的に追加されることはありません。Although this method creates the new object in the context of the document, it does not automatically add the new object to the document tree. 新しいオブジェクトを追加するには、ノードの挿入メソッドの1つを明示的に呼び出す必要があります。To add the new object, you must explicitly call one of the node insert methods.

W3C拡張マークアップ言語 (XML) 1.0 勧告によれば、entityreference ノードは Element、Attribute、entityreference ノード内でのみ許可されます。According to the W3C Extensible Markup Language (XML) 1.0 recommendation, EntityReference nodes are only allowed within Element, Attribute and EntityReference nodes.

適用対象