• C# 读取XML示例


    using Microsoft.Win32;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using System.Xml;
    
    namespace MAutoUpdate
    {
        public class LocalInfo
        {
            public string LocalVersion { get; set; }
            public string LastUdpate { get; set; }
            public string ServerUpdateUrl { get; set; }
            public string LocalIgnoreVersion { get; set; }
    
            private string url = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Local.xml");
    
    
            public LocalInfo(string localAddress)
            {
                url = Path.Combine(localAddress, "Local.xml");
            }
    
            public void SaveReg(string subKey)
            {
                RegistryKey Key;
                Key = Registry.CurrentUser;
                //Key = Key.OpenSubKey("SOFTWARE\\GoodMES\\Update");
                Key = Key.OpenSubKey(subKey, true);
    
                foreach (var item in this.GetType().GetProperties())
                {
                    Key.SetValue(item.Name.ToString(), this.GetType().GetProperty(item.Name.ToString()).GetValue(this, null).ToString());
                }
            }
            public void LoadReg(string subKey)
            {
                //获取本地配置文件
                RegistryKey Key;
                Key = Registry.CurrentUser;
                Key = Key.OpenSubKey(subKey);
    
                foreach (var item in this.GetType().GetProperties())
                {
                    this.GetType().GetProperty(item.Name.ToString()).SetValue(this, Key.GetValue(item.Name.ToString()).ToString(), null);
                }
                Key.Close();
            }
            public void LoadXml()
            {
                XmlDocument xdoc = new XmlDocument();
                xdoc.Load(url);
                var root = xdoc.DocumentElement;
                var listNodes = root.SelectNodes("/LocalUpdate");
                foreach (XmlNode item in listNodes)
                {
                    RemoteInfo remote = new RemoteInfo();
                    foreach (XmlNode pItem in item.ChildNodes)
                    {
                        GetType().GetProperty(pItem.Name).SetValue(this, pItem.InnerText, null);
                    }
                }
            }
            public void SaveXml()
            {
                XmlDocument xdoc = new XmlDocument();
                xdoc.Load(url);
                var root = xdoc.DocumentElement;
                var listNodes = root.SelectNodes("/LocalUpdate");
                foreach (XmlNode item in listNodes)
                {
                    foreach (XmlNode pItem in item.ChildNodes)
                    {
                        // Key.SetValue(item.Name.ToString(), this.GetType().GetProperty(item.Name.ToString()).GetValue(this, null).ToString());
                        pItem.InnerText = this.GetType().GetProperty(pItem.Name.ToString()).GetValue(this, null).ToString();
                    }
                }
                xdoc.Save(url);
            }
        }
    }
    <LocalUpdate>
      <LocalVersion>1.0.0.0</LocalVersion>
      <LocalIgnoreVersion>1.1.0.0</LocalIgnoreVersion>
      <LastUdpate>2016/9/28 9:25:24</LastUdpate>
      <ServerUpdateUrl>http://localhost/huidu/server.xml</ServerUpdateUrl>
    </LocalUpdate>

     针对只有一个键值的XML文件,读取和修改键值程序示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Xml;
    
    namespace LRDDI
    {
       public static class CommFunc
        {
            /// <summary>
            /// 获取XML文件中的节点信息(只限唯一键值)
            /// </summary>
            /// <param name="filename">XML文件名,须带扩展名**.xml</param>
            /// <param name="nodesString">节点信息,须带//,如:"//LocalUpdate"</param>
            /// <param name="keyString">键名</param>
            /// <returns></returns>
            public static string GetXmlValue(string filename,string nodesString,string keyString)
            {
                string valueString = "";
                try
                {
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.Load(filename);
                    //XmlNode node = xmldoc.SelectSingleNode("//LocalUpdate");
                    XmlNode node = xmldoc.SelectSingleNode(nodesString);
                    valueString = node.SelectSingleNode(keyString).InnerText;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("取XML信息" + filename + "-" + nodesString + "出错!\r\n" + ex.Message); ;
    
                }
                return valueString;
            }
    
            /// <summary>
            /// 修改XML文件中的节点信息,(只限唯一键值)
            /// </summary>
            /// <param name="filename">XML文件名,须带扩展名**.xml</param>
            /// <param name="nodesString">节点信息,须带//,如:"//LocalUpdate"</param>
            /// <param name="keyString">键名</param>
            /// <param name="keyValue">键值</param>
            /// <returns></returns>
            public static string SetXmlValue(string filename, string nodesString, string keyString,string keyValue)
            {
                
                try
                {
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.Load(filename);
                    XmlNode node = xmldoc.SelectSingleNode(nodesString);
                    //设成新值
                    node.SelectSingleNode(keyString).InnerText = keyValue;
                    xmldoc.Save("config.xml");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("取XML信息" + filename + "-" + nodesString + "出错!\r\n" + ex.Message); ;
                    return "0";
                }
                return "1";
            }
        }
    }
  • 相关阅读:
    Maven创建项目: Failed to execute goal org.apache.maven.plugin( mvn archetype:create)
    maven仓库--私服(Nexus的配置使用)
    maven仓库--私服(Nexus的配置使用)
    maven仓库--私服(Nexus的配置使用)
    maven中snapshot快照库和release发布库的区别和作用
    maven中snapshot快照库和release发布库的区别和作用
    maven中snapshot快照库和release发布库的区别和作用
    Bugzilla使用手册及解决方案
    jQuery常见的几个文档处理方式
    正则表达式实现对多个表格的某一指定字段的样式添加
  • 原文地址:https://www.cnblogs.com/lrzy/p/16564808.html
Copyright © 2020-2023  润新知