XmlDocuments 在创建时,具有专门为该文档创建的名称表。 当 XML 加载到文档中或创建新元素或属性时,属性和元素名称将放入 XmlNameTable 中。 还可以使用另一个文档中的现有 NameTable 创建 XmlDocument。 当使用采用 XmlNameTable 参数的构造函数创建 XmlDocuments 时,文档可以访问已存储在 XmlNameTable 中的节点名称、命名空间和前缀。 无论名称表如何加载名称表,一旦名称存储在表中,就可以使用对象比较而不是字符串比较来快速比较名称。 还可以使用 Add 将字符串添加到名称表中。 下面的代码示例展示了如何创建名称表,并将字符串MyString添加到该表中。 之后,将使用该表创建 XmlDocument , Myfile.xml 中的元素和属性名称将添加到现有名称表中。
Dim nt As New NameTable()
nt.Add("MyString")
Dim doc As New XmlDocument(nt)
doc.Load("Myfile.xml")
NameTable nt = new NameTable();
nt.Add("MyString");
XmlDocument doc = new XmlDocument(nt);
doc.Load("Myfile.xml");
下面的代码示例展示了如何创建一个文档,如何添加两个新元素到文档中,这些元素也会因此被添加到文档名称表中,以及在名称上的对象比较。
Dim doc1 As XmlDocument = imp.CreateDocument()
Dim node1 As XmlElement = doc.CreateElement("node1")
Dim doc2 As XmlDocument = imp.CreateDocument()
Dim node2 As XmlElement = doc.CreateElement("node2")
if (CType(node1.Name, object) = CType(node2.Name, object))
XmlDocument doc1 = imp.CreateDocument();
node1 = doc1.CreateElement ("node1");
XmlDocument doc2 = imp.CreateDocument();
node2 = doc2.CreateElement ("node1");
if (((object)node1.Name) == ((object)node2.Name))
{ ...
当重复处理相同类型的文档时,例如电子商务网站中的订单文档,符合 XML 架构定义语言(XSD)架构或文档类型定义(DTD),并且相同的字符串被重复时,在两个文档之间传递名称表的上述方案是典型的。 使用同一名称表可提高性能,因为多个文档中出现相同的元素名称。