c#解析xml文件<--1-->

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Xml;

namespace xml

{

    class Program

    {

        static void Main(string[] args)

        {

            model mdl = new model();

            AnalyseXml anlysXml = new AnalyseXml();

            string file = @"E:\me\xml\xml\demo.xml";//文件的路径;

            string path0 = "/p:root/p:books/p:book[1]/p:name";//节点路径

            string path1 = "/p:root/p:books/p:book[1]/p:author";

            string path2 = "/p:root/p:books/p:book[1]/p:price";

            anlysXml.LoadXml(file);//加载文件;

            anlysXml.AddNamespaceManager("p", "bookNameSpacea");

            mdl.Name = anlysXml.GetNodeValue(path0);

            mdl.Author = anlysXml.GetNodeValue(path1);

            mdl.Price = anlysXml.GetNodeValue(path2);

            Console.WriteLine(mdl.Name);

            Console.WriteLine(mdl.Author);

            Console.WriteLine(mdl.Price);

        }

    }

    /// <summary>

    /// 建立xml节点模型,这里只是一个例子,具体模型还要看具体问题。

    /// </summary>

    class model

    {

        private string name, author, price;

        public string Name

        {

            set { this.name = value;}

            get { return name; }

        }

        public string Author

        {

            set { this.author = value;}

            get { return author; }

        }

        public string Price

        {

            set { this.price = value; }

            get { return price; }

        }

    }

    /// <summary>

    /// 对xml文件的操作

    /// </summary>

    class AnalyseXml

    {

        /// <summary>

        /// doc,xml文档

        /// </summary>

        protected XmlDocument doc = null;

        /// <summary>

        /// root,xml文档的根节点

        /// </summary>

        protected XmlElement root = null;

        /// <summary>

        /// nsmgr,xml命名空间管理

        /// </summary>

        protected XmlNamespaceManager nsmgr = null;

        /// <summary>

        /// 加载xml文件

        /// </summary>

        /// <param name="file"></param>

        public void LoadXml(string filePath)

        {

            FileInfo xmlFile = new FileInfo(filePath);

            if (!xmlFile.Exists || xmlFile == null)

            {

                throw new FileNotFoundException("未找到要加载的{0}文件", xmlFile.FullName);

            }

            else

            {

                this.doc = new XmlDocument();

                doc.Load(xmlFile.FullName);//把文件的全路径当做参数加载到doc上,实现文件的加载;

                root = doc.DocumentElement;//获得xml文件的根节点;

                nsmgr = new XmlNamespaceManager(doc.NameTable);//把与xml文件关联的XmlNameTable作为参数传入到xmlNamespaceManager

            }

        }

        /// <summary>

        /// 为XmlNamespaceManager添加prefix与namespace映射。

        /// </summary>

        /// <param name="prefix"></param>

        /// <param name="nameSpace"></param>

        public void AddNamespaceManager(string prefix, string nameSpace)

        {

            this.nsmgr.AddNamespace(prefix, nameSpace);

        }

        /// <summary>

        /// 获取节点内的信息

        /// </summary>

        /// <param name="xPath">xpath路径表达式</param>

        /// <returns></returns>

        public string GetNodeValue(string xPath)

        {

            XmlNode xNode = root.SelectSingleNode(xPath, nsmgr);//实现了前缀与命名空间的转化,并且选中的要得到的元素节点

            if (xNode == null)

                return null;

            else

                return xNode.InnerXml;//指获取当前节点内的所有信息,包含元素节点标签。InnerText表示只获取元素节点的值。

        }

        /// <summary>

        /// 改变当前的NodeValue


        /// </summary>

        /// <param name="xPath"></param>

        /// <param name="Value"></param>

        public void ChangeNodeValue(string xPath, string Value)

        {

            XmlNode xNode = root.SelectSingleNode(xPath, nsmgr);

            xNode.InnerXml = Value;

        }

    }

}

下边是我的xml文件
<?xml version="1.0" encoding="utf-8" ?>
<p:root xmlns:p="bookNameSpacea">
  <p:books>
    <p:book>
      <p:name>冰与火之歌</p:name>
      <p:author>外国人</p:author>
      <p:price>10</p:price>
    </p:book>
    <book>
      <name>龙族</name>
      <author>江南</author>
      <price>20</price>
    </book>
    <book>
      <name>数据结构与算法原理</name>
      <author>未知</author>
      <price>30</price>
    </book>
  </p:books>
</p:root>


转载于:https://my.oschina.net/u/2551141/blog/637184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值