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编程—2-Xml读取器XmlReader类

前言     XmlReader类提供了对XML文档内容快速的,只向前的访问,但不适合对文档内容和结构进行修改,XmlReader从XML文档的顶部开始读取数据,每次读取一个节点   读取XML文...

C#XML入门经典.part2.rar

  • 2007年12月08日 13:46
  • 8.58MB
  • 下载

C# XML入门经典[书籍2/3部分]

  • 2008年06月23日 17:43
  • 9.02MB
  • 下载

XML访问技术(2)--C#

需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlElement xmlele...

cocos2d-x 3.2读取xml和json练习

读取和生成xml

ASP_NET XML高级编程-C#编程篇.part2.rar

  • 2009年07月31日 07:36
  • 10.23MB
  • 下载

C# 简单封装一个XML文件读取类

很久没碰XML文件读写了,今天帮朋友写了一个相关的读取XML文件的操作类,封装成dll便于使用。先说下需求吧:A:在XML文件中有多个集,每个集里面包含多个节点。B:可根据集的名字的取出这个集合下面的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#读取XML 练习2
举报原因:
原因补充:

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