C# XML解析方式实例解析1

简介:

C# XML解析通过XPath的方式是如何办到的呢?具体的操作步骤是什么呢?那么下面我们就向你介绍通过XPath的方式来实现C# XML解析,希望对你了解C# XML解析有所帮助。

C# XML解析通过XPath的方式的步骤:

1、需要先加载文档,然后再读取想要的节点值。

◆xml文档

protected XmlDocument doc = null;

◆xml文档的根元素(节点)

protected XmlElement root = null;

◆xml文档的名空间管理器

protected XmlNamespaceManager nsmgr = null;

2、接下来就是加载文档了

protected void LoadXmlFile(FileInfo xmlFile)    {  if (xmlFile == null || !xmlFile.Exists)  {   throw new FileNotFoundException(  string.Format("要解析的文件不存在{0}。",  xmlFile.FullName));  }  //加载文件  this.doc = new XmlDocument();  doc.Load(xmlFile.FullName);  //准备读取文件  root = doc.DocumentElement;  string nameSpace = root.NamespaceURI;  nsmgr = new XmlNamespaceManager(doc.NameTable);  nsmgr.AddNamespace("ns", nameSpace);    } 

◆C# XML解析通过XPath的方式要注意。

a、这两行是取得xml文档的名空间

root = doc.DocumentElement;  string nameSpace = root.NamespaceURI; 

b、这两行是建立xml文档的名空间管理器

nsmgr = new XmlNamespaceManager(doc.NameTable);  nsmgr.AddNamespace("ns", nameSpace); 

如果你的xml文档有名空间,则这部分的代码是必不可少的。

3、接下来就是读取文档节点的值了

这里两个传入参数prefixPath是节点的上级节点路径,xRelativePath是要读取的节点名称。

另外,变量XmlFileInfo是要加载的xml文件。

protected string GetNodeValue(  string prefixPath, string xRelativePath)    {  if (doc == null)  {   LoadXmlFile(XmlFileInfo);  }  string xPath = string.Empty;  if (!string.IsNullOrEmpty(xRelativePath))  {   if (!string.IsNullOrEmpty(prefixPath))   {    xPath = prefixPath + xRelativePath;   }   else  {    xPath = xRelativePath;   }  }  xPath = xPath.Replace("/", "/ns:");  XmlNode node = root.SelectSingleNode(xPath, nsmgr);  if (node == null)  {   return null;  }  return node.InnerXml;    } 

可能有的朋友要问,为什么要设置两个参数prefixPath和xRelativePath呢,其实这个没有多大的关系,我只是为了自己觉得方便,你也可以在方法外确定了这个XPath,在方法中只设置一个传入参数,效果是一样的。

◆注意这一行:

xPath = xPath.Replace("/", "/ns:"); 

如果你的xml文档带名空间,则这行是比不可少的,否则会出现找不到节点,无法解析的情况。

关于XPath的一些问题:

对于这样一个xml文档,要查找第一个节点下的学生的Name时(ID=01),其XPath应该是"/ns:Root/ns:Students/ns:Student[1]/ns:Name"。xml对于重复的节点名称,是按照顺序1,2,3...的方式遍历的,也就是说如果要找第N个Student节点的下的节点之,那么应使用Student[N]的标识方式。

﹤?xml version="1.0" encoding="UTF-8" ?﹥  ﹤Root xmlns="urn:ClassNameSpace"﹥  ﹤Class﹥  ﹤ClassID﹥1234﹤/ClassID﹥  ﹤/Class﹥  ﹤Students﹥  ﹤Student﹥  ﹤ID﹥01﹤/ID﹥﹤Name﹥Name01﹤/Name﹥  ﹤/Student﹥  ﹤Student﹥  ﹤ID﹥02﹤/ID﹥﹤Name﹥Name02﹤/Name﹥  ﹤/Student﹥  ﹤/Students﹥  ﹤/Root﹥ 

当然,这里也可以获取节点属性的值,查找满足特定值的节点等等,这些和上面获取节点值的过程是类似的。



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/26/1917476.html,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
252 8
|
4月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
271 19
|
8月前
|
存储 监控 算法
解析公司屏幕监控软件中 C# 字典算法的数据管理效能与优化策略
数字化办公的时代背景下,企业为维护信息安全并提升管理效能,公司屏幕监控软件的应用日益普及。此软件犹如企业网络的 “数字卫士”,持续记录员工电脑屏幕的操作动态。然而,伴随数据量的持续增长,如何高效管理这些监控数据成为关键议题。C# 中的字典(Dictionary)数据结构,以其独特的键值对存储模式和高效的操作性能,为公司屏幕监控软件的数据管理提供了有力支持。下文将深入探究其原理与应用。
204 4
|
9月前
|
机器学习/深度学习 监控 算法
员工上网行为监控软件中基于滑动窗口的C#流量统计算法解析​
在数字化办公环境中,员工上网行为监控软件需要高效处理海量网络请求数据,同时实时识别异常行为(如高频访问非工作网站)。传统的时间序列统计方法因计算复杂度过高,难以满足低延迟需求。本文将介绍一种基于滑动窗口的C#统计算法,通过动态时间窗口管理,实现高效的行为模式分析与流量计数。
282 2
|
10月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2576 1
|
10月前
|
存储 缓存 负载均衡
阿里云服务器实例选择指南:热门实例性能、适用场景解析对比参考
2025年,在阿里云的活动中,主售的云服务器实例规格除了轻量应用服务器之外,还有经济型e、通用算力型u1、计算型c8i、通用型g8i、计算型c7、计算型c8y、通用型g7、通用型g8y、内存型r7、内存型r8y等,以满足不同用户的需求。然而,面对众多实例规格,用户往往感到困惑,不知道如何选择。本文旨在全面解析阿里云服务器实例的各种类型,包括经济型、通用算力型、计算型、通用型和内存型等,以供参考和选择。
|
10月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
406 15
|
10月前
|
监控 算法 安全
基于 C# 的内网行为管理软件入侵检测算法解析
当下数字化办公环境中,内网行为管理软件已成为企业维护网络安全、提高办公效率的关键工具。它宛如一位恪尽职守的网络守护者,持续监控内网中的各类活动,以确保数据安全及网络稳定。在其诸多功能实现的背后,先进的数据结构与算法发挥着至关重要的作用。本文将深入探究一种应用于内网行为管理软件的 C# 算法 —— 基于二叉搜索树的入侵检测算法,并借助具体代码例程予以解析。
168 4
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
715 37
|
10月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。

推荐镜像

更多
  • DNS