System.Xml.XmlDocument.CreateEntityReference 方法

方法描述

创建具有指定名称的 XmlEntityReference。

语法定义(C# System.Xml.XmlDocument.CreateEntityReference 方法 的用法)

public virtual XmlEntityReference CreateEntityReference(
	string name
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
name System-String 实体引用的名称。
返回值 System.Xml.XmlEntityReference 新的 XmlEntityReference。

提示和注释

如果引用的实体已知,则使 XmlEntityReference 节点的子列表与相应 XmlEntity 节点的子列表相同。

实体引用的替换文本中使用的命名空间在首次设置实体引用节点的父级时绑定(例如,当将实体引用节点插入文档时)。 例如,给定下面的实体:

复制

test">

如果调用 CreateEntityReference("a"),您将得到类型为 EntityReference 的单个节点,没有任何子级。 如果您将该节点追加为以下节点的子级,

复制

那么,当调用 AppendChild 时,将设置刚创建的实体引用节点的父级并在该命名空间上下文中展开子级。 子元素节点 b 将具有 NamespaceURI(等于 urn:1)。 即使您将该实体引用移动到文档中具有不同默认命名空间上下文的位置,该实体引用的子节点也保持不变。 对于现有的实体引用节点,当您对它们进行移除或插入时;或对于通过 CloneNode 克隆的实体引用,这都不会发生。 它只对刚创建的实体引用发生。

如果当添加实体引用节点时未在 DocumentType 中定义相应的实体,则因为未定义实体引用,它唯一的子节点将为空文本节点。

内置的实体 amp、lt、gt、apos 和 quot 也允许使用,它们将具有带有适当的展开字符值的子文本节点。

尽管此方法在文档的上下文中创建新对象,但它并不自动将新对象添加到文档树。 若要添加新对象,必须显式调用节点插入方法之一。

根据 W3C 可扩展标记语言 (XML) 1.0 建议 (www.w3.org/TR/1998/REC-xml-19980210),EntityReference 节点只能包含在 Element、Attribute 和 EntityReference 节点中。

System.Xml.XmlDocument.CreateEntityReference 方法例子

下面的示例创建两个实体引用节点并将它们插入 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("]>" +
                "" +
                "Pride And Prejudice" +
                "" +
                ""); 

    //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 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);

  }
}

异常

异常 异常描述
ArgumentException 名称无效(例如,以“#”开头的名称无效。)

命名空间

namespace: System.Xml

程序集: System.Xml(在 System.Xml.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。