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. Scala面向对象之创建对象,重载构造方法,继承抽象类实现接口

    package com.wyh.day01 object ScalaClass { def main(args: Array[String]): Unit = { val student = new ...

  2. 【ABAQUS Material】density 行为

    1.overview 进行eigenfrequency . transient dynamic analysis. transient heat transfer analysis. adiabati ...

  3. 腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记

    RustDesk是一个基于Rust编写的全平台开源远程桌面软件,其最大的特点为开箱即用,且数据完全自主掌控,甚至可以依托此项目定制化开发自己专属的远程桌面软件. 一.前言 由于我个人经常性出差,对远程 ...

  4. FastAPI性能优化指南:参数解析与惰性加载

    扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 探索数千个预构建的 AI 应用,开启你的下一个伟大创意 第一章:参数解析性能原理 1.1 FastAPI请求处理管线 async def ...

  5. Linux centos 运行telnet命令command not found的解决方法

      Linux centos 运行telnet命令,出现下面的错误提示: 1 2 [root@localhost ~]# telnet 127.0.0.1 -bash: telnet: command ...

  6. docker中 启动所有的容器命令

    docker中 启动所有的容器命令 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中    关闭所有的容器命令 ...

  7. Pydantic字段级校验:解锁@validator的12种应用

    title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: ...

  8. CSAPP学习笔记——chapter4 处理器体系结构

    CSAPP学习笔记--chapter4 处理器体系结构 这一章相对于其它的章节,是相对来说比较困难的一章:其它章节的一些内容都在计组,计网,操作系统等课程里面已经接触过一些概念,但是有关处理器,我才发 ...

  9. 通俗易懂分布式事务之2PC、3PC、Seata AT模式、Seata TCC模式

    通俗易懂分布式事务之2PC.3PC.AT.TCC 单机服务事务提交回滚操作是需要拿到Connection对象,调用提交commit方法或者rollback方法回滚的,例如下面操作 Connection ...

  10. BotSharp + MCP 三步实现智能体开发

    1. 简介 1.1 什么是MCP Model Context Protocol(MCP)模型上下文协议是一种标准化协议,它让大模型能够更容易地和外部的数据.工具连接起来.你可以把MCP想象成一个通用的 ...