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形式返回,可以对其进行进一步的处理和操作。

XmlNamespaceManager与XmlDocument.NameTable浅述的更多相关文章

  1. 浅述不同版本ios系统有什么特点 ios 1 -ios 12

    版本记录 版本号 时间 V2.0 2019.08.20 前言 到目前为止,ios的版本已经发到了ios11的测试版,今年正式版马上就会出来,ios发布了这么多的版本,到底每个版本都有什么显著的特点?用 ...

  2. 浅述WinForm多线程编程与Control.Invoke的应用

    VS2008.C#3.0在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在W ...

  3. 浅述python中argsort()函数的用法

    由于想使用python用训练好的caffemodel来对很多图片进行批处理分类,学习过程中,碰到了argsort函数,因此去查了相关文献,也自己在python环境下进行了测试,大概了解了其相关的用处, ...

  4. iOS 多线程 浅述

    什么是进程? 进程是指在系统中正在运行的一个应用程序. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 什么是线程? 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程 ...

  5. 浅述Oracle分布式事务概念

    着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加.分布式文件系统.分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛.分布式数据库也是目前使用比较常用的分布式系统之一. 简单来说 ...

  6. 浅述 Java 并发

    浅述 Java 并发 volatile volatile只能保证变量对各个线程的可见性,但不能保证原子性.关于 Java语言 volatile 的使用方法就不多说了,我的建议是 除了 配合packag ...

  7. Android Jni调用浅述

    声明:欢迎转载,转载时请注明出处!http://blog.csdn.net/flydream0/article/details/7371692 1 简述 JNI是Java Native Interfa ...

  8. 浅述Try {} Catch{} 作用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test ...

  9. 浅述python中range()函数的用法

    函数用法说明: 用法一:range(m) 输出: [0,1,...,m-1](从0到m-1的一个list,不包括m) 示例: 用法二:range(m,n),m<n 输出:[m,m+1,..,n- ...

  10. 【转】iOS 设置APP的名称(浅述APP版本国际化与本地化)

    原文网址:http://www.jianshu.com/p/a3a70f0398c4 前言 App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名 ...

随机推荐

  1. hbase - [03] 客户端常用命令(hbase shell)

    1.列出所有namespace list_namespace 2.创建namespace create_namespace 'ns_name' 3.修改namespace属性 alter_namesp ...

  2. Spark - 面试题

    Spark是什么?答案:Apache Spark是一个快速.通用的大数据处理引擎,它提供了大规模数据集的内存计算和分布式计算能力.Spark可以处理各种数据源,如HDFS.Hive.Cassandra ...

  3. 解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常

    博客链接:解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常 配置 Device: Dell PowerEdge T630 CPU: Intel(R) Xeon(R ...

  4. centos 运行springboot 项目

    jar文件发布: 准备工作: 发布在springboot项目中的pom.xml文件添加如下: <build> <plugins> <plugin> <grou ...

  5. VUE-CLI 创建VUE3项目

    前言 第一篇当然是如何安装vue3 安装步骤 第一步安装vue-cli npm install -g @vue/cli // vue --version 第二步创建项目 vue create hell ...

  6. Selenium Webdriver 介绍

    在前两篇文章中,主要介绍了Selenium IDE 工具及其使用和它的特点,也使用Selenium IDE和Firebug构建了一些脚本.本文,我们开始介绍不同类型的web元素及其定位策略 我们已经非 ...

  7. angular双向数据绑定踩坑记:

    在angular中使用ngModel时出现了一个报错error NG8002: Can't bind to 'ngModel' since it isn't a known property of ' ...

  8. Manus,没有秘密「注解版」

    近来Manus走红,「争论」不断,我也在前文<Manus爆火,是硬核还是营销?>中阐述过自Manus发布后,行业讨论以及开源复刻的信息,以及我们如何结合蚂蚁图计算(TuGraph)技术,实 ...

  9. Caddy web服务器

    caddy 中文文档:https://caddy2.dengxiaolong.com/docs/ 常用命令 命令 描述 caddy run 启动Caddy服务器 caddy reload 重载Cadd ...

  10. php session存进去,取不出来

    目录 一.检查 php.ini 二.查看 /var/tmp 是否有读写权限 ,如果没有: 三.检查 php-fpm 配置文件 四.重启 php-fpm 一.检查 php.ini vim /etc/ph ...