假设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文件指定节点相关推荐

  1. C#中读取XML文件方法

    C#中读取XML文件方法 XML 简介 格式 c#读取XML文件方法 使用XmlDocument 操作 注意 解决方法: 使用XmlTextReader/XmlTextWriter 操作 使用Linq ...

  2. 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 ...

  3. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

  4. 读取XML文件的节点内的内容

    <?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...

  5. 在asp.net中读取XML文件信息的4种方法

    方法一 :使用XML控件     <% @ Page Language="C#"%>  <html> <body>         <h3 ...

  6. ASP.NET中读取XML文件4种方法

    参考文章:http://www.cnblogs.com/maoyu417/archive/2007/11/02/946901.html 一共有四种方法,创建一个asp.net项目,下面有四个页面,如下 ...

  7. C#中常用的几种读取XML文件的方法

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  8. c++中使用libxml2读取xml文件【转】

    能解析元素节点的属性... linux下,纯c++使用libxml2读取xml文件 下载libxml2 [url]ftp://ftp.xmlsoft.org/libxml2/libxml2-sourc ...

  9. html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...

    本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法.分享给大家供大家参考,具体如下: 先看xml文件: 张秋丽 女 18 李文才 男 31 李斯文 男 22 马英 女 25 孙红雷 ...

最新文章

  1. SQL中的Where,Group By,Order By和Having的用法/区别
  2. webkit webApp 开发技术要点总结
  3. 机器学习sklearn19.0聚类算法——Kmeans算法
  4. [禅悟人生]心平气和, 慢慢修行
  5. log解析工具 px4_console.log(console.log) = ?
  6. python程序设计——班级档案管理系统
  7. java音频下载_java 实现网易云音乐下载和播放
  8. 个税系统代理服务器参数是什么,个税系统网络参数设置服务器地址
  9. 一款用VBS编写的修仙风格打怪游戏
  10. 思科模拟器交换机的基本配置
  11. AUTOSAR CDD 模块解析 --- 设计建议
  12. 想玩IEO又怕跑得慢?LBank的“锁仓释放”了解下
  13. 交互设计师怎样理解信息架构?
  14. git免密pull指定ssh密钥文件
  15. Word无法打开该文件,因为文件格式与文件扩展名不匹配
  16. Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理
  17. vue echarts在中国地图鼠标经过同一指标下的多个省份高亮或凸起
  18. 使用composer开发dfc程序
  19. javascript面向对象(三):class语法详解
  20. 简单爬虫1688商品的主图和详情图

热门文章

  1. mysql5.7gtid_MySQL5.7 GTID 运维实战
  2. vim编辑器全部删除文件内容
  3. mysql带where条件导出数据表以及部分错误解析
  4. Android性能优化之启动优化实战篇,积累总结
  5. 【迁移学习(Transfer L)全面指南】不需要时关闭autograd的方法:torch.no_grad
  6. 【Web安全】中国蚁剑+DVWA(本地文件上传漏洞Upload)
  7. python 进程间通信效率_Python进程间通信 multiProcessing Queue队列实现详解
  8. 织梦html仅动态,dede织梦系统后台发布文章时设置为默认动态浏览的方法
  9. matlab txt写入excel,怎么把matlab的GUI文本编辑器中的数据存入EXCEl
  10. 什么是网络推广浅析如何提高搜索引擎的抓取频次?