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

using System;算法

using System.Collections.Generic;c#

using System.Linq;數據結構

using System.Text;this

using System.IO;spa

using System.Xml;code

namespace xmlxml

{utf-8

    class Program文檔

    {get

        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>
相關文章
相關標籤/搜索