如何创建XML文件并获取其中某一节点值

前几天小崔哥让我整一个插件系统,然后说了一句自己好好研究吧。这个系统用到了动态获取XML文件中的节点值,根据值的不同实现不同的操作。我就从最基本的XML开始学习。

XML文件就如同数据结构中的树,拥有自己的节点,可以将创建的元素加入到某个节点下面成为它的子节点。元素的属性可以通过元素来创建。

下面是我做的一个小例子来方便理解下:

          XmlDocument xml = new XmlDocument();
            //创建根节点config
            XmlElement config = xml.CreateElement("Config");
            //把根节点加到xml文档中
            xml.AppendChild(config);

            //创建一个节点path(用于做子节点)
            XmlElement path1 = xml.CreateElement("Path");
            //path节点中的文本内容为:E\Test\@用于转义后面的'\'
            path1.InnerText = @"E:\Test\";
            //将path添加为config的子节点
            config.AppendChild(path1);

            //以下Regex同理
            XmlElement regex = xml.CreateElement("Regex");
            regex.InnerText = "<![CDDATA[@^abc$]]>";
            config.AppendChild(regex);

            XmlElement ini = xml.CreateElement("ini");
            //所以 我们需要创建ini标签里的xml属性,属性名为timeout
            XmlAttribute timeout = xml.CreateAttribute("timeout");
            //timeout的属性内容为200
            timeout.InnerText = "200";
            //标签ini里的文档内容为time
            ini.InnerText = "time";
            //创建完标签的属性timeout后需要将其添加到ini标签的属性里
            ini.Attributes.Append(timeout);
            //最后将ini标签添加到config父节点里
            config.AppendChild(ini);

            //最后将整个xml文件保存在D盘
            xml.Save(Request.PhysicalApplicationPath+"abc.xml");
Request.PhysicalApplicationPath也就是当前项目的根目录,“abc.xml”是保存后的文件名称。创建后用记事本打开显示为:

<Config>
  <Path>E:\Test\</Path>
  <Regex><![CDDATA[@^abc$]]></Regex>
  <ini timeout="200">time</ini>
</Config>

创建好XML文件后,如何获取其中的某一节点值呢?

创建XML文件,然后加载需获取的文件,通过选择节点获取节点值。例如:

          XmlDocument doc = new XmlDocument();
            //查看文件是否存在
            if (!Directory.Exists(Request.PhysicalApplicationPath+"abc.xml"))
            {
                Response.Write("对不起,您要获取目录不存在。");
                return;
            }
            //加载文件
            doc.Load(Request.PhysicalApplicationPath+"abc.xml");
            ////获取根节点
            //XmlNodeList nodelist = doc.SelectNodes("//Path");
            XmlNode node = null;
            //获取节点
            node = (doc.SelectSingleNode("//Path"));
            if (node != null)
            {
                //返回节点内容
                txtTest.Text = node.InnerXml == "" ? node.InnerText : node.InnerXml;
            }
            else
            {
                txtTest.Text= "";
            }

这里只是简单的小例子来方便我理解插件系统的做法,继续做的就是如何解压缩问题,网上找了很多的例子但是都不尽如意,自考过后再研究这个问题与大家分享一下。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇