C#中读取xml文件指定节点
假设xml文件内容是
<?xml version="1.0" encoding="utf-8"?>
<Workflow>
<Activity>
<ActivityId>1</ActivityId>
<ActivityName>start</ActivityName>
<BindingPageId>1</BindingPageId>
<BindingRoleId>1</BindingRoleId>
<ActivityLevel>1</ActivityLevel>
</Activity>
<Activity>
<ActivityId>2</ActivityId>
<ActivityName>pass</ActivityName>
<BindingPageId>2</BindingPageId>
<BindingRoleId>2</BindingRoleId>
<ActivityLevel>2</ActivityLevel>
</Activity>
</Workflow>
我们需要读取Activity节点下的内容,因为存在多个Activity,所以需要读取多个节点。可以使用 XmlDocument.SelectSingleNode和XmlDocument.SelectNodes方法查找节点。前一个是查找匹配的第一个节 点,而后一个则会返回一个节点列表。
1.XmlDocument.SelectSingleNode方法的使用
首先创建一个读取xml文件的方法ReadXmlNode
/// <summary>
/// 读取xml中的指定节点的值
/// </summary>
public void ReadXmlNode(string filename)
{
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(filename);
//读取Activity节点下的数据。SelectSingleNode匹配第一个Activity节点
XmlNode root = xmlDoc.SelectSingleNode("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取
if (root != null)
{
string ActivityId = (root.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (root.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = root.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
}
else
{
Console.WriteLine("the node is not existed");
//Console.Read();
}
}
catch (Exception e)
{
//显示错误信息
Console.WriteLine(e.Message);
}
}
然后在主函数中调用该方法
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNode("activity.xml");
Console.Read();
}
}
输出结果为:
ActivityId:1
ActivityName:start
ActivityLevel:1
2.XmlDocument.SelectNodes方法的使用
/// <summary>
/// 读取xml中的指定节点的值,如果有多个同名节点,则全部读取
/// </summary>
public void ReadXmlNodes(string filename)
{
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(filename);
XmlNodeList xnList = xmlDoc.SelectNodes("//Activity");
Console.WriteLine("共有{0}个节点", xnList.Count);//输出xnList中节点个数。
foreach (XmlNode xn in xnList)
{
//无法使用xn["ActivityId"].InnerText
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = xn.SelectSingleNode("ActivityName").InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
// Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.WriteLine("ActivityId: {0}/nActivityName: {1}/nActivityLevel: {2}", ActivityId, ActivityName, ActivityLevel);
}
}
catch (Exception e)
{
//显示错误信息
Console.WriteLine(e.Message);
}
}
然后在主函数中调用该方法
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNodes("activity.xml");
Console.Read();
}
}
输出结果为:
共有2个节点
ActivityId: 1
ActivityName: start
ActivityLevel: 1
ActivityId: 2
ActivityName: pass
ActivityLevel: 2
3.通过节点属性查找指定节点
参考http://www.csharp-examples.net/xml-nodes-by-attribute-value/,虽然没有用到参考文章中的方法,不过总觉得以后会用到的。
/// <summary>
///通过ActivityLevel获取xmlnode,需要保证ActivityLevel在一个xml文档中是唯一的。
/// </summary>
public XmlNode getXmlNode(string filename, string activitylevel)
{
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(filename);
XmlNodeList xnList = xmlDoc.SelectNodes("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取
foreach (XmlNode xn in xnList)
{
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
if(activitylevel==ActivityLevel)
{
return xn;
}
}
}
catch (Exception e)
{
//显示错误信息
Console.WriteLine(e.Message);
}
return null;
}
然后在主函数中调用该方法
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
XmlNode xn=xmlOpr.getXmlNode("activity.xml", "2");
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (xn.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.Read();
}
}
输出结果为:
ActivityId:2
ActivityName:pass
ActivityLevel:2
转载于:https://www.cnblogs.com/edangame/p/5327985.html
C#中读取xml文件指定节点相关推荐
- C#中读取XML文件方法
C#中读取XML文件方法 XML 简介 格式 c#读取XML文件方法 使用XmlDocument 操作 注意 解决方法: 使用XmlTextReader/XmlTextWriter 操作 使用Linq ...
- matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)
matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...
- SQL Server中读取XML文件的简单做法
SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...
- 读取XML文件的节点内的内容
<?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...
- 在asp.net中读取XML文件信息的4种方法
方法一 :使用XML控件 <% @ Page Language="C#"%> <html> <body> <h3 ...
- ASP.NET中读取XML文件4种方法
参考文章:http://www.cnblogs.com/maoyu417/archive/2007/11/02/946901.html 一共有四种方法,创建一个asp.net项目,下面有四个页面,如下 ...
- C#中常用的几种读取XML文件的方法
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
- c++中使用libxml2读取xml文件【转】
能解析元素节点的属性... linux下,纯c++使用libxml2读取xml文件 下载libxml2 [url]ftp://ftp.xmlsoft.org/libxml2/libxml2-sourc ...
- html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...
本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法.分享给大家供大家参考,具体如下: 先看xml文件: 张秋丽 女 18 李文才 男 31 李斯文 男 22 马英 女 25 孙红雷 ...
最新文章
- SQL中的Where,Group By,Order By和Having的用法/区别
- webkit webApp 开发技术要点总结
- 机器学习sklearn19.0聚类算法——Kmeans算法
- [禅悟人生]心平气和, 慢慢修行
- log解析工具 px4_console.log(console.log) = ?
- python程序设计——班级档案管理系统
- java音频下载_java 实现网易云音乐下载和播放
- 个税系统代理服务器参数是什么,个税系统网络参数设置服务器地址
- 一款用VBS编写的修仙风格打怪游戏
- 思科模拟器交换机的基本配置
- AUTOSAR CDD 模块解析 --- 设计建议
- 想玩IEO又怕跑得慢?LBank的“锁仓释放”了解下
- 交互设计师怎样理解信息架构?
- git免密pull指定ssh密钥文件
- Word无法打开该文件,因为文件格式与文件扩展名不匹配
- Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理
- vue echarts在中国地图鼠标经过同一指标下的多个省份高亮或凸起
- 使用composer开发dfc程序
- javascript面向对象(三):class语法详解
- 简单爬虫1688商品的主图和详情图
热门文章
- mysql5.7gtid_MySQL5.7 GTID 运维实战
- vim编辑器全部删除文件内容
- mysql带where条件导出数据表以及部分错误解析
- Android性能优化之启动优化实战篇,积累总结
- 【迁移学习(Transfer L)全面指南】不需要时关闭autograd的方法:torch.no_grad
- 【Web安全】中国蚁剑+DVWA(本地文件上传漏洞Upload)
- python 进程间通信效率_Python进程间通信 multiProcessing Queue队列实现详解
- 织梦html仅动态,dede织梦系统后台发布文章时设置为默认动态浏览的方法
- matlab txt写入excel,怎么把matlab的GUI文本编辑器中的数据存入EXCEl
- 什么是网络推广浅析如何提高搜索引擎的抓取频次?