1. 程式人生 > >C#XmlHelper操作Xml文件的幫助類

C#XmlHelper操作Xml文件的幫助類

using System.Xml;
using System.Data;
 
namespace DotNet.Utilities
{
    /// <summary>
    /// Xml的操作公共類
    /// </summary>    
    public class XmlHelper
    {
        #region 欄位定義
        /// <summary>
        /// XML檔案的物理路徑
        /// </summary>
        private string _filePath = string.Empty;
        /// <summary>
        /// Xml文件
        /// </summary>
        private XmlDocument _xml;
        /// <summary>
        /// XML的根節點
        /// </summary>
        private XmlElement _element;
        #endregion
 
        #region 構造方法
        /// <summary>
        /// 例項化XmlHelper物件
        /// </summary>
        /// <param name="xmlFilePath">Xml檔案的相對路徑</param>
        public XmlHelper(string xmlFilePath)
        {
            //獲取XML檔案的絕對路徑
            _filePath = SysHelper.GetPath(xmlFilePath);
        }
        #endregion
 
        #region 建立XML的根節點
        /// <summary>
        /// 建立XML的根節點
        /// </summary>
        private void CreateXMLElement()
        {
 
            //建立一個XML物件
            _xml = new XmlDocument();
 
            if (DirFile.IsExistFile(_filePath))
            {
                //載入XML檔案
                _xml.Load(this._filePath);
            }
 
            //為XML的根節點賦值
            _element = _xml.DocumentElement;
        }
        #endregion
 
        #region 獲取指定XPath表示式的節點物件
        /// <summary>
        /// 獲取指定XPath表示式的節點物件
        /// </summary>        
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        public XmlNode GetNode(string xPath)
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //返回XPath節點
            return _element.SelectSingleNode(xPath);
        }
        #endregion
 
        #region 獲取指定XPath表示式節點的值
        /// <summary>
        /// 獲取指定XPath表示式節點的值
        /// </summary>
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        public string GetValue(string xPath)
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //返回XPath節點的值
            return _element.SelectSingleNode(xPath).InnerText;
        }
        #endregion
 
        #region 獲取指定XPath表示式節點的屬性值
        /// <summary>
        /// 獲取指定XPath表示式節點的屬性值
        /// </summary>
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        /// <param name="attributeName">屬性名</param>
        public string GetAttributeValue(string xPath, string attributeName)
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //返回XPath節點的屬性值
            return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;
        }
        #endregion
 
        #region 新增節點
        /// <summary>
        /// 1. 功能:新增節點。
        /// 2. 使用條件:將任意節點插入到當前Xml檔案中。
        /// </summary>        
        /// <param name="xmlNode">要插入的Xml節點</param>
        public void AppendNode(XmlNode xmlNode)
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //匯入節點
            XmlNode node = _xml.ImportNode(xmlNode, true);
 
            //將節點插入到根節點下
            _element.AppendChild(node);
        }
 
        /// <summary>
        /// 1. 功能:新增節點。
        /// 2. 使用條件:將DataSet中的第一條記錄插入Xml檔案中。
        /// </summary>        
        /// <param name="ds">DataSet的例項,該DataSet中應該只有一條記錄</param>
        public void AppendNode(DataSet ds)
        {
            //建立XmlDataDocument物件
            XmlDataDocument xmlDataDocument = new XmlDataDocument(ds);
 
            //匯入節點
            XmlNode node = xmlDataDocument.DocumentElement.FirstChild;
 
            //將節點插入到根節點下
            AppendNode(node);
        }
        #endregion
 
        #region 刪除節點
        /// <summary>
        /// 刪除指定XPath表示式的節點
        /// </summary>        
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        public void RemoveNode(string xPath)
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //獲取要刪除的節點
            XmlNode node = _xml.SelectSingleNode(xPath);
 
            //刪除節點
            _element.RemoveChild(node);
        }
        #endregion //刪除節點
 
        #region 儲存XML檔案
        /// <summary>
        /// 儲存XML檔案
        /// </summary>        
        public void Save()
        {
            //建立XML的根節點
            CreateXMLElement();
 
            //儲存XML檔案
            _xml.Save(this._filePath);
        }
        #endregion //儲存XML檔案
 
        #region 靜態方法
 
        #region 建立根節點物件
        /// <summary>
        /// 建立根節點物件
        /// </summary>
        /// <param name="xmlFilePath">Xml檔案的相對路徑</param>        
        private static XmlElement CreateRootElement(string xmlFilePath)
        {
            //定義變數,表示XML檔案的絕對路徑
            string filePath = "";
 
            //獲取XML檔案的絕對路徑
            filePath = SysHelper.GetPath(xmlFilePath);
 
            //建立XmlDocument物件
            XmlDocument xmlDocument = new XmlDocument();
            //載入XML檔案
            xmlDocument.Load(filePath);
 
            //返回根節點
            return xmlDocument.DocumentElement;
        }
        #endregion
 
        #region 獲取指定XPath表示式節點的值
        /// <summary>
        /// 獲取指定XPath表示式節點的值
        /// </summary>
        /// <param name="xmlFilePath">Xml檔案的相對路徑</param>
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        public static string GetValue(string xmlFilePath, string xPath)
        {
            //建立根物件
            XmlElement rootElement = CreateRootElement(xmlFilePath);
 
            //返回XPath節點的值
            return rootElement.SelectSingleNode(xPath).InnerText;
        }
        #endregion
 
        #region 獲取指定XPath表示式節點的屬性值
        /// <summary>
        /// 獲取指定XPath表示式節點的屬性值
        /// </summary>
        /// <param name="xmlFilePath">Xml檔案的相對路徑</param>
        /// <param name="xPath">XPath表示式,
        /// 範例1: @"Skill/First/SkillItem", 等效於 @"//Skill/First/SkillItem"
        /// 範例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點.
        /// 範例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性.
        /// </param>
        /// <param name="attributeName">屬性名</param>
        public static string GetAttributeValue(string xmlFilePath, string xPath, string attributeName)
        {
            //建立根物件
            XmlElement rootElement = CreateRootElement(xmlFilePath);
 
            //返回XPath節點的屬性值
            return rootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;
        }
        #endregion
 
        #endregion
 
        public static void SetValue(string xmlFilePath, string xPath, string newtext)
        {
            //string path = SysHelper.GetPath(xmlFilePath);
            //var queryXML = from xmlLog in xelem.Descendants("msg_log")
            //               //所有名字為Bin的記錄
            //               where xmlLog.Element("user").Value == "Bin"
            //               select xmlLog;
 
            //foreach (XElement el in queryXML)
            //{
            //    el.Element("user").Value = "LiuBin";//開始修改
            //}
            //xelem.Save(path);
        }
    }
}

相關推薦

C#XmlHelper操作Xml幫助

using System.Xml; using System.Data;   namespace DotNet.Utilities {     /// <summary>     /// Xml的操作公共類     /// </summary>   

PHP至Document操作 xml

fin con 本地服務器 函數 文件 問題解決 contents ont nbsp 今天將項目上傳到服務器後,打開項目發現報錯 Error:undefined function appendChild()。。。。。。,根據提示查看源代碼,發現 new Docume

C#操作Xml(刪除)

list 導入 adk new key 操作xml log string void 步驟如下: 1、導入命名空間 system.Xml。 2、創建Xml文檔。 3、加載要讀取的xml文件。 4、SelectSingleNode()進行選中節點。 例子練習。 static

C#讀取xml靜態

col tex oca spa void n) bin log element internal static class XmlUtil { internal static XmlDocument doc; interna

c#讀寫Xml

引用 use 記錄 一行 tar desktop for 單個 contacts 寫入xml文件 第一種方法:使用XmlDocument類: Demo1 //通過代碼創建XML文檔 //1、引用命名空間 System.Xml

使用dom4j操作xml的增刪改

使用dom4j操作xml文件的增刪改package day2.domx; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import org.dom4j.Document; import

python操作Xml

python python操作xml模塊 xml模塊 一、簡單介紹Xml是實現不同語言或程序進行數據交換的協議,跟json差不多,但是xml遠遠先於json出現,例如在很多傳統的金融行業的很多系統接口還主要是xml格式。Xml的格式如下:<Settings modified="20

操作xml

foreach text 獲取 文件 console com () line eno //讀取 XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("person.xml")); //加載Xml

JAVASCRIPT中使用DOM操作XML(轉)

<script language="JavaScript"><!--var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM") //載入文件//doc.load("

JAXP----DOM方式操作XML

import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFact

jaxp解析器用dom方式操作xml的總結

1. xml解析技術概述    解析xml文件一般有兩種技術:dom(Document Object Model)和sax(Simple API for XML)。dom即文件物件模型,是W3C組織推薦的處理xml的一種方式;sax不是官方標準,但它是xm

libxml C語言寫xml

1. 示例原始碼 #include <stdio.h> #include <string.h> #include <libxml/encoding.h> #include <libxml/xmlwriter.h> #defi

JAXP----SAX操作XML

1.SAX解析允許在讀取文件的時候,即對文件進行處理,而不必等到整個文件裝載完才會對文件進行操作!!! sax採用事件處理方式解析XML檔案,涉及解析器和事件處理器 解析器可以使用JAXP的API建立,只要解析到XML文件的一個組成部分,都會去呼叫事件處理器的一個方法,解析

C#對XML的各種操作方法

C# XML文件的各種操作方法 內容來自越康體育分享。 XML:Extensible Markup Language(可擴展標記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標準通用標

C#操作CSV實例

thumbnail image node efault gpo padding 多線程同步 如果 str 本文實例講述了C#操作CSV文件類。分享給大家供大家參考。具體分析如下: 這個C#類用於轉換DataTable為CSV文件、CSV文件轉換成DataTable,如果需

c++對properties配置操作工具

c++ properties code源代碼GitHub路徑:源代碼地址下載 最近要使用c++對windows api相關接口的封裝,有2個接口要求讀寫properties文件。原以為網上應該有一大堆資料的,結果拜BAI度的大恩大德,一點相關的資料都沒有。那就只能自己動手豐衣足食。再次感謝十分強大只是找不到相

C#_基礎_操作Directory(十七)

刪除文件夾 delet In clas C# AS mov 靜態類 創建文件 1 //using System.IO; 2 ///Directory:操作文件夾/目錄的類,Directory是靜態類 3 ///創建文件

XML操作VXML

存儲 () 相對 reac 打開 轉義字符 -c sys tps 敬告 VXML.cs不是一個通用的類。僅僅是作者為了方便自己的程序編寫。 下載地址 https://github.com/velscode/V-CS-ClassLib 使用說明 目標XML文件,存儲了數據庫連

C#操作Xml:通過XmlDocument讀寫Xml

轉自:http://www.cnblogs.com/yukaizhao/archive/2011/07/19/csharp_xmldocument_access_xml.html Xml是擴充套件標記語言的簡寫,是一種開發的文字格式。關於它的更多情況可以通過

C# 利用FTP自動下載xml後利用 FileSystemWatcher 監控目錄下文變化並自動更新數據庫

use img div 進行 ssa reg c# col without using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel;