XmlNamespaceManager与XmlDocument.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形式返回,可以对其进行进一步的处理和操作。
XmlNamespaceManager与XmlDocument.NameTable浅述的更多相关文章
- 浅述不同版本ios系统有什么特点 ios 1 -ios 12
版本记录 版本号 时间 V2.0 2019.08.20 前言 到目前为止,ios的版本已经发到了ios11的测试版,今年正式版马上就会出来,ios发布了这么多的版本,到底每个版本都有什么显著的特点?用 ...
- 浅述WinForm多线程编程与Control.Invoke的应用
VS2008.C#3.0在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在W ...
- 浅述python中argsort()函数的用法
由于想使用python用训练好的caffemodel来对很多图片进行批处理分类,学习过程中,碰到了argsort函数,因此去查了相关文献,也自己在python环境下进行了测试,大概了解了其相关的用处, ...
- iOS 多线程 浅述
什么是进程? 进程是指在系统中正在运行的一个应用程序. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 什么是线程? 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程 ...
- 浅述Oracle分布式事务概念
着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加.分布式文件系统.分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛.分布式数据库也是目前使用比较常用的分布式系统之一. 简单来说 ...
- 浅述 Java 并发
浅述 Java 并发 volatile volatile只能保证变量对各个线程的可见性,但不能保证原子性.关于 Java语言 volatile 的使用方法就不多说了,我的建议是 除了 配合packag ...
- Android Jni调用浅述
声明:欢迎转载,转载时请注明出处!http://blog.csdn.net/flydream0/article/details/7371692 1 简述 JNI是Java Native Interfa ...
- 浅述Try {} Catch{} 作用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test ...
- 浅述python中range()函数的用法
函数用法说明: 用法一:range(m) 输出: [0,1,...,m-1](从0到m-1的一个list,不包括m) 示例: 用法二:range(m,n),m<n 输出:[m,m+1,..,n- ...
- 【转】iOS 设置APP的名称(浅述APP版本国际化与本地化)
原文网址:http://www.jianshu.com/p/a3a70f0398c4 前言 App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名 ...
随机推荐
- hbase - [04] java访问hbase
需要导入jar包 $HBASE_HOME/lib下的所有jar包 $HADOOP_HOME/share/hadoop/common的所有jar包 package com.harley.hbase.te ...
- IvorySQL 升级指南:从 3.x 到 4.0 的平滑过渡
日前,IvorySQL 4.0 重磅发布,全面支持 PostgreSQL 17,并且增强了对 Oracle 的兼容性.关于 IvorySQL 4.0 的介绍,各位小伙伴可以通过这篇文章回顾:Ivory ...
- Oracle 强行断开用户连接的方法
1.查找目标用户的当前进程 select sid,serial# from v$session where username='test'; 2.使用上述语句会返回一个进程列表,每行有两个数字,用数字 ...
- 10 卷积神经网络CNN原理
1. 全连接层 前文中我们讨论的几乎都是全连接层,也就是在层间,每个神经元都与前一层的所有神经元相连接,如图: 也就是每层的每个feature,都与前一层所有features相关联,是前一层所有fea ...
- BUUCTF---rsa2
题目 N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241 ...
- 使用AOP技术实现接口验签
一.背景 在给第三方提供接口时,我们需要对接口进行验签.具体来说,当外部系统调用我们的接口时,请求中需要携带一个签名,我们接收到请求后,会解析数据并校验签名是否正确,以确保请求的合法性和安全性. 为了 ...
- EntityFramework 6 分页模式
在我的另一篇博客中提到了EntityFrameworkCore 分页问题, 中提到了EntityFrameworkCore在针对不同版本SQL Server数据库时如何指定分页模式,那么如何在Enti ...
- 实现Android键盘自适应
实现Android键盘自适应 unit Unit13; interface uses System.SysUtils, System.Types, System.UITypes, System.Cla ...
- mongo db集群故障选举分析
转载请注明出处: 一.MongoDB集群基础架构 1. 副本集(Replica Set)核心原理 节点角色: Primary:唯一可写节点,处理所有写操作和默认读请求 Secondary:异步复制Pr ...
- 关于TCP的握手与挥手
关于TCP的握手与挥手 前言 由于自己每次都是唱的比懂的好听,光知道唱"三次握手四次挥手",再往里细问SYN标志就只能阿巴阿巴阿巴,为了解决自己的知识储备问题,顺便继续深入了解TC ...