返回介绍

使用 XmlNameTable 的对象比较

发布于 2025-02-23 23:16:00 字数 1670 浏览 0 评论 0 收藏 0

XmlDocuments ,创建时,有专门用于该文档创建的名称表。 当 XML 加载到文档,或创建新元素或属性时,属性和元素的名称将放入 XmlNameTable 。 你还可以创建 XmlDocument 使用现有 NameTable 从另一个文档。 当 XmlDocuments 使用采用的构造函数创建 XmlNameTable 参数,该文档具有对节点名称、 命名空间和前缀已存储在访问 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])并重复相同的字符串时,通常使用以上在两个文档之间传递名称表的方案。 使用同一名称表可提高性能,因为同一元素名出现在多个文档中。

另请参阅

XML 文档对象模型 (DOM)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文