asp.net c#封装的一个xml文件读取类

A:在XML文件中有多个集,每个集里面包含多个节点。

B:可根据集的名字的取出这个集合下面的所有节点值

C:可一次性取出所有的节点值

D:其中有一个是无限拓展的就是:表达式

E:把集合读取到一个模型(实体类)当中

getmxl.cs文件

 代码如下 复制代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XmlOperation
{
     /*
     * 使用方法:调用GetCommandByName("指令名") 获取该指令下的所有信息
     * XML文件规范:见该本页代码底部
     *
     * 作者:Andrew
     * BLOG:http://www.111cn.net     *
     */
    class GetMxl
    {
        XmlNodeList nodeList;
        public GetMxl(string xmlFilePath)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(xmlFilePath);
            nodeList = doc.SelectNodes("/Equipment//Command");
        }

        /// <summary>
        /// 根据指令名获得该组指令的信息
        /// </summary>
        /// <param name="commandName">指令名</param>
        /// <returns>返回该指令的所有信息</returns>
        public List<string> GetCommandByName(string commandName)
        {
            foreach (XmlNode xmlNode in nodeList)
            {
                if (xmlNode["name"].InnerText == commandName)
                {
                    List<string> cmdList = new List<string>();
                    cmdList.Add(xmlNode["name"].InnerText);
                    cmdList.Add(xmlNode["value"].InnerText);
                    cmdList.Add(xmlNode["string"].InnerText);
                    for (int i = 3; i < xmlNode.ChildNodes.Count; i++)
                    {
                        cmdList.Add(xmlNode.ChildNodes[i].InnerText);
                    }
                    return cmdList;
                }
            }
            return null;
        }

        /// <summary>
        /// 获得所有的指令名
        /// </summary>
        public string[] Names
        {
            get
            {
                string[] names = new string[Count];
                for (int i = 0; i < nodeList.Count; i++)
                {
                    names[i] = nodeList[i]["name"].InnerText;
                }
                return names;
            }
        }

        /// <summary>
        /// 获取一共有多少条指令
        /// </summary>
        public int Count
        {
            get
            {
                return nodeList.Count;
            }
        }
    }
}
/*
 *
<?xml version="1.0" encoding="utf-8" ?>
<Equipment>
    <Command>
        <name>指令名2</name>
        <value>指令值</value>
        <string>正确的字符串</string>
        <put>表达式1</put>
        <put>表达式2</put>
        <put>表达式3</put>
        <put>表达式4</put>
     </Command>
    <Command>
        <name>指令名</name>
        <value>指令值</value>
        <string>正确的字符串</string>
        <put>表达式1</put>
        <put>表达式2</put>
        <put>表达式3</put>
        <put>表达式4</put>
        <put>表达式5</put>
     </Command>
</Equipment>
 *
 * 以上是XML文件规范写入
 */

xmcommandMode.cs文件

 代码如下 复制代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XmlOperation
{
    public class XmlCommandModel
    {
        public XmlCommandModel()
        {

        }

        /// <summary>
        /// 设定XML文件路径,并且根据【指令名】获取一个指令集合对象
        /// </summary>
        /// <param name="xmlFilePath">xml文件路径</param>
        /// <param name="commandByName">指令名</param>
        public XmlCommandModel(string xmlFilePath,string commandByName)
        {
            GetMxl getXml = new GetMxl(xmlFilePath);
            List<string> cmdList = getXml.GetCommandByName(commandByName);
            commandName = cmdList[0];
            commandValue = cmdList[1];
            commandString = cmdList[2];
            commandPuts = new string[cmdList.Count - 3];
            for (int i = 3; i < cmdList.Count; i++)
            {
                commandPuts[i - 3] = cmdList[i];
            }
        }

        private string commandName;
        /// <summary>
        /// 指令名称
        /// </summary>
        public string CommandName
        {
            get { return commandName; }
            set { commandName = value; }
        }

        private string commandValue;
        /// <summary>
        /// 指令值
        /// </summary>
        public string CommandValue
        {
            get { return commandValue; }
            set { commandValue = value; }
        }
        private string commandString;
        /// <summary>
        /// 正确的字符串
        /// </summary>
        public string CommandString
        {
            get { return commandString; }
            set { commandString = value; }
        }

        private string[] commandPuts;
        /// <summary>
        /// 表达式
        /// </summary>
        public string[] CommandPuts
        {
            get { return commandPuts; }
            set { commandPuts = value; }
        }
    }
}

xmlopt.cs文件

 代码如下 复制代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XmlOperation
{
    public class XmlOpt
    {
        GetMxl getXml;

        /// <summary>
        /// 实例化一个指定路径的实例
        /// </summary>
        /// <param name="filePath">XML文件路径</param>
        public XmlOpt(string filePath)
        {
            this.filePath = filePath;
            getXml = new GetMxl(filePath);
        }

 

        /// <summary>
        /// 根据指令名获取一个对象
        /// </summary>
        /// <param name="SelectCommandNmae">指令名</param>
        /// <returns></returns>
        public XmlCommandModel GetCommandModelByName(string SelectCommandNmae)
        {
            XmlCommandModel cmd = new XmlCommandModel(filePath, SelectCommandNmae);
            return cmd;
        }

        /// <summary>
        /// 获取所有指令的对象集合
        /// </summary>
        public List<XmlCommandModel> GetCommandModelList
        {
            get
            {
                List<XmlCommandModel> cmdList = new List<XmlCommandModel>();
                for (int i = 0; i < commandCout; i++)
                {
                    XmlCommandModel cmdModel = new XmlCommandModel(filePath, CommandNames[i]);
                    cmdList.Add(cmdModel);
                }
                return cmdList;
            }
        }

        /// <summary>
        /// 获取所有的指令名
        /// </summary>
        public string[] CommandNames
        {
            get
            {
                return getXml.Names;
            }
        }

        /// <summary>
        /// 获取一共多少条指令
        /// </summary>
        public int commandCout
        {
            get
            {
                return getXml.Count;
            }
        }

        private string filePath;
        /// <summary>
        /// 获取已设置的文件路径
        /// </summary>
        public string FilePath
        {
            get { return filePath; }
        }
    }
}

最后一个简单的配置codetest.snl

 

 代码如下 复制代码
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyXML", "MyXMLMyXML.csproj", "{283858AE-82B4-4411-810F-C6AD19833132}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlOperation", "XmlOperationXmlOperation.csproj", "{9A50C0DB-77F2-4B31-A451-90222CB56E00}"
EndProject
Global
 GlobalSection(SolutionConfigurationPlatforms) = preSolution
  Debug|Any CPU = Debug|Any CPU
  Release|Any CPU = Release|Any CPU
 EndGlobalSection
 GlobalSection(ProjectConfigurationPlatforms) = postSolution
  {283858AE-82B4-4411-810F-C6AD19833132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  {283858AE-82B4-4411-810F-C6AD19833132}.Debug|Any CPU.Build.0 = Debug|Any CPU
  {283858AE-82B4-4411-810F-C6AD19833132}.Release|Any CPU.ActiveCfg = Release|Any CPU
  {283858AE-82B4-4411-810F-C6AD19833132}.Release|Any CPU.Build.0 = Release|Any CPU
  {9A50C0DB-77F2-4B31-A451-90222CB56E00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  {9A50C0DB-77F2-4B31-A451-90222CB56E00}.Debug|Any CPU.Build.0 = Debug|Any CPU
  {9A50C0DB-77F2-4B31-A451-90222CB56E00}.Release|Any CPU.ActiveCfg = Release|Any CPU
  {9A50C0DB-77F2-4B31-A451-90222CB56E00}.Release|Any CPU.Build.0 = Release|Any CPU
 EndGlobalSection
 GlobalSection(SolutionProperties) = preSolution
  HideSolutionNode = FALSE
 EndGlobalSection
EndGlobal
时间: 2024-08-05 14:53:36

asp.net c#封装的一个xml文件读取类的相关文章

向大家求教一个xml文件生成功能目录菜单的问题!

问题描述 我现在有一个xml文件,各式如下:<items><itemText="系统管理"Look-LeftIconUrl=""Expanded="false"><itemText="密码修改"Look-LeftIconUrl="MenuList_icon1.jpg"/><itemText="数据库备份"Look-LeftIconUrl=&quo

快速从一个XML文件中查找信息

在网络时代,XML文件起到了一个保存和传输数据的作用.Soap协议通过Xml交流信息,数据库通过Xml文件存取等等.那么怎样快速的从一个XML文件中取得所需的信息呢? 我们知道,JAVA的JAXP中和Microsoft.Net都有Xml分析器,Microsoft.Net是边读边分析,而JAXP是读到内存中然后才进行分析(还有一种是事件机制去读),总而言之,是不利于快速读取.基于此,Microsoft.Net 和JAXP都提供了XPATH机制,来快速定位到XML文件中所需的节点. 例如有一个XML

怎样快速从一个XML文件中查找信息

xml 在网络时代,XML文件起到了一个保存和传输数据的作用.Soap协议通过Xml交流信息,数据库通过Xml文件存取等等.那么怎样快速的从一个XML文件中取得所需的信息呢? 我们知道,JAVA的JAXP中和Microsoft.Net都有Xml分析器,Microsoft.Net是边读边分析,而JAXP是读到内存中然后才进行分析(还有一种是事件机制去读),总而言之,是不利于快速读取.基于此,Microsoft.Net 和JAXP都提供了XPATH机制,来快速定位到XML文件中所需的节点. 例如有一

android-如何控制一个xml文件中lable内容的显示与否?

问题描述 如何控制一个xml文件中lable内容的显示与否? 我用下面的代码来控制一个xml文件中lable内容的显示: <include android:id="@+id/right2" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="10" layout="@layout/detai

安卓开发-android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢

问题描述 android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢 android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢 有没有Activity不需要xml文件的情况呢 解决方案 多个xml一般是需要适配不同大小的屏幕,安卓会根据屏幕大小自动加载不同size的屏幕的xml,安卓开发是mvc结构,activity一定需要一个view,通常是需要xml做view,但是也可以自定义一个view然后activity加载这个view

html5-JS,jQuery代码 封装到一个JS文件的问题

问题描述 JS,jQuery代码 封装到一个JS文件的问题 $(document).ready(function(){ $(".liren_content:odd").css("float",'right'); $('.mall_list').find('ul li:nth-child(3)').css('border','0'); var count=0; $(".jiaru").click(function () { // alert(111

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

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能.实现如下: XmlDoc类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleCSharp { class XmlDoc { internal static st

android编程之xml文件读取和写入方法_Android

本文实例讲述了android编程之xml文件读取和写入方法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Eclipse 二.说明: 1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置 2.读取xml文件 三.xml文件格式: <?xml version="1.0" encoding="UTF-8" standalone="true"?> -<config> <titl

android编程之xml文件读取和写入方法

本文实例讲述了android编程之xml文件读取和写入方法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Eclipse 二.说明: 1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置 2.读取xml文件 三.xml文件格式: <?xml version="1.0" encoding="UTF-8" standalone="true"?> -<config> <titl