首页 > 其他分享 >XmlNamespaceManager与XmlDocument.NameTable浅述

XmlNamespaceManager与XmlDocument.NameTable浅述

时间:2023-05-05 22:36:02浏览次数:47  
标签:XML 对象 XmlDocument XmlNamespaceManager ns 浅述 NameTable

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNamespaceManager nsmgr=new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://WebXml.com.cn/");
var nodes = doc.SelectNodes("//ns:string", nsmgr);

NameTable属性:
在XML文档中,元素和属性的名称、命名空间、前缀等信息都以字符串形式存在。为了避免在XML文档中重复创建这些字符串,造成内存的浪费,.NET Framework提供了一个NameTable类,用于创建和存储XML文档中使用的字符串对象。NameTable类实现了一个字符串池,它确保任何在XML文档中使用的字符串只被存储一次。

XmlDocument类中的NameTable属性是一个公共的XmlNameTable对象,它用于存储XML文档中所有命名空间和元素的名称。当创建一个新的XmlDocument对象时,它会自动创建一个新的NameTable对象,并将其作为NameTable属性的值。NameTable对象可用于创建和管理XmlDocument对象中使用的所有字符串对象,如元素名称、属性名称、命名空间前缀等。在多个XmlDocument对象中使用相同的NameTable对象,可以实现字符串共享和内存的节省。

在XmlNamespaceManager类中,如果使用与XmlDocument对象相同的NameTable对象,可以确保XmlDocument对象和XmlNamespaceManager对象共享相同的字符串池,从而避免内存浪费。因此,在创建XmlNamespaceManager对象时,通常会将XmlDocument对象的NameTable属性作为参数传递给XmlNamespaceManager类的构造函数。

nsmgr.AddNamespace("ns", "http://WebXml.com.cn/");这行代码定义了一个名为"ns"的命名空间前缀,并将其与"http://WebXml.com.cn/"命名空间URI关联起来。这个命名空间前缀可以被用于选择符合该命名空间的XML节点。

var nodes = doc.SelectNodes("//ns:string", nsmgr);这行代码使用XPath表达式"//ns:string"从XML文档中选择所有命名空间前缀为"ns"、元素名为"string"的XML节点。其中,doc.SelectNodes()方法的第一个参数是XPath查询表达式,第二个参数是XmlNamespaceManager对象,用于识别和处理该XPath查询表达式中使用的命名空间。查询结果以XmlNodeList形式返回,可以对其进行进一步的处理和操作。

标签:XML,对象,XmlDocument,XmlNamespaceManager,ns,浅述,NameTable
From: https://www.cnblogs.com/johnyang/p/17375556.html

相关文章

  • 浅述综合管廊消防安全及预防对策
    陈盼安科瑞电气股份有限公司上海嘉定 201801摘要:本文简要介绍了城市综合管廊特点及火灾原因,分别从防火分隔、通风排烟、自动报警以及灭火设施等方面,对电缆隧道消防安全......
  • 浅述综合管廊供配电系统设计方案
    罗轩志安科瑞电气股份有限公司上海嘉定 201801 摘要:城市综合管廊的供配电系统设计多种多样,通过对综合管廊自用负荷的分析及安全运行的因素考虑,并结合综合管廊设计案例,......
  • 防火墙定义与分类,浅述
    什么是防火墙?防火墙是设置在被保护网络和外部网络之间的一道屏障,设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间,用于在内部网与外部网、专用网与公......
  • 走样与反走样(抗锯齿)浅述
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • 纹理映射浅述
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • 浅述国产的高性能,兼容性强,低成本蓝牙SOC芯片-PHY6252/CMT4552
    PHY6252搭载高性能低功耗32位处理器 ContexM0,64KretentionSRAM,可选512/256KFlash,96KBROM以及256bitefuse。内置的高性能多模射频收发机最大发射功率达到10dBm,BLE1......
  • 襟翼是什么?——浅述飞控襟翼系统
    01.什么是襟翼?飞机是20世纪初最重要的发明之一,也是现代文明的代表。为了将飞机与热气球、滑翔伞等飞行工具进行区分,人们将飞机定义为由一具或多具动力装置产生推力或拉力,......