C#读取XML 练习2

原创 2012年03月22日 15:07:41
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;

namespace ReadXml
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, string> DicXmlPairs = new MyXMLReader().DicXmlPairs;

            string sql=string.Empty;
            if (DicXmlPairs.TryGetValue("id1", out sql))
            {
                Console.WriteLine(sql);
            }

            Console.ReadKey();
        }
        public class MyXMLReader
        {
            public Dictionary<string, string> DicXmlPairs 
            {
                get 
                {
                    return this.GetAllXmlContent();
                } 
            }
            private string key = string.Empty;
            /// <summary>
            /// 获取一个Xml文件的 key value
            /// </summary>
            /// <param name="xmlFile"></param>
            /// <param name="dicXmlContents"></param>
            private  void AnalyzeXml(FileInfo xmlFile, ref Dictionary<string, string> dicXmlContents)
            {
                XmlTextReader reader = null;
                try
                {
                    reader = new XmlTextReader(xmlFile.FullName);
                    reader.WhitespaceHandling = WhitespaceHandling.None;
                    while (reader.Read())
                    {
                       switch (reader.NodeType) 
                        {
                            case XmlNodeType.Element:
                                {
                                    if ("sql".Equals(reader.Name) && reader.HasAttributes && 1 == reader.AttributeCount)
                                    {
                                        key = reader.GetAttribute("name");
                                    }
                                }
                                break;
                            case XmlNodeType.CDATA: 
                                {
                                    dicXmlContents.Add(key, reader.ReadContentAsString());
                                }
                                break;
                           default:
                                break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }                
            }
            /// <summary>
            /// 获得所有XML文件中的key value
            /// </summary>
            private  Dictionary<string,string> GetAllXmlContent()
            {
                Dictionary<string, string> dicXmlContents = new Dictionary<string, string>();
                string xmlPath = AppDomain.CurrentDomain.BaseDirectory;
                List<FileInfo> lstFiles = new List<FileInfo>();

                GetXMLFiles(new DirectoryInfo(xmlPath), ref lstFiles);

                foreach (FileInfo xmlfile in lstFiles)
                {
                    AnalyzeXml(xmlfile, ref dicXmlContents);
                }
                return  dicXmlContents;
            }
            //获取全部的Xml文件
            private  void GetXMLFiles(DirectoryInfo xmlDir, ref List<FileInfo> lstFiles)
            {
                foreach (FileInfo files in xmlDir.GetFiles())
                {
                    if (files.Extension.ToUpper().EndsWith(".XML"))
                    {
                        lstFiles.Add(files);
                    }
                }
                foreach (DirectoryInfo subDir in xmlDir.GetDirectories())
                {
                    GetXMLFiles(subDir, ref lstFiles);
                }
            }
        }

    }
}

Xml文件 内容:

<?xml version="1.0" encoding="utf-8" ?>
<sql-definations>


  <!--lalalaalala-->
  <sql name="id1">
    <![CDATA[
      select xxx from xxx where xxxx=xx
    ]]>
  </sql>


</sql-definations>

C#读取XML文件的内容

在项目中需要用C#程序读取XML文件内的内容,这里给大家做一个简单的例子用来演示C#的读取过程。 1、给出的XML文件内容如下所示: 语文 Chinese...
  • qq_30507287
  • qq_30507287
  • 2016年12月22日 21:19
  • 278

C#读取XML内容

/// /// 获取一个报表的参数 /// public static ReportAdapterSection GetReportAdapterSectionByID(string Rep...
  • hdhai9451
  • hdhai9451
  • 2013年09月29日 16:56
  • 1687

C#读取远程xml,直接读取web网站xml

一、使用LINQ读取使用Xdocument上的Load方法,可以快速的加载一个XML文档,然后使用LINQ对 加载XML文档进行查询或其他操作,这里仅简单偏历。所以,一旦查询一组元素有返回元素集,就可...
  • wyqlxy
  • wyqlxy
  • 2010年12月06日 12:01
  • 1928

C#读取XML流数据

C#读取XML流数据,使用dom方式(还有一个sax方式),当然啦  方法是转存在这里 public void parseXML(String s){  ...
  • Vanqqqq
  • Vanqqqq
  • 2015年07月30日 16:39
  • 317

C#读取XML文件——自定义类

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能。实现如下: XmlDoc类 using System...
  • u011331383
  • u011331383
  • 2015年02月03日 22:01
  • 1034

c# 读取带有命名空间的XML

1.xml的内容 ...
  • wind_cloud2011
  • wind_cloud2011
  • 2014年01月01日 19:12
  • 1062

C# 简单的XML读取修改写入

XML概念 Root XML根节点,只能且必须有一个(以上为LinkLibrary) Element 节点元素(如Link) Attribute 节点属性(如Cat, Url, Desc) C...
  • u011555996
  • u011555996
  • 2016年11月02日 10:40
  • 1612

python基础练习(四)—— 读取文件内容

python基础练习(四)—— 读取文件内容
  • kwu_ganymede
  • kwu_ganymede
  • 2016年04月24日 18:29
  • 763

c#读取xml文件配置文件Winform及WebForm-Demo详解

c#读取xml文件配置文件Winform及WebForm-Demo详解
  • yangyisen0713
  • yangyisen0713
  • 2014年11月03日 14:16
  • 2834

c#读取xml文件到datagridview中

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
  • a771948524
  • a771948524
  • 2013年03月24日 09:20
  • 2903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#读取XML 练习2
举报原因:
原因补充:

(最多只允许输入30个字)