From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 SimpleUtil/HMI.Simple.Util/XmlHelper.cs |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/SimpleUtil/HMI.Simple.Util/XmlHelper.cs b/SimpleUtil/HMI.Simple.Util/XmlHelper.cs
new file mode 100644
index 0000000..b8661a9
--- /dev/null
+++ b/SimpleUtil/HMI.Simple.Util/XmlHelper.cs
@@ -0,0 +1,93 @@
+锘縰sing System;
+using System.IO;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace HMI.Simple.Util
+{
+    public static class XmlHelper
+    {
+
+        static readonly XmlSerializerNamespaces DEFAULT_NS = new XmlSerializerNamespaces();
+
+        static XmlHelper()
+        {
+            DEFAULT_NS.Add("", "");
+        }
+
+        /// <summary>
+        /// serialize object to xml file.
+        /// </summary>
+        /// <param name="path">the path to save the xml file</param>
+        /// <param name="obj">the object you want to serialize</param>
+        public static void SerializeToXml(string path, object obj)
+        {
+            XmlSerializer serializer = new XmlSerializer(obj.GetType());
+            string content = string.Empty;
+            //serialize
+            using (StringWriter writer = new StringWriter())
+            {
+                serializer.Serialize(writer, obj, DEFAULT_NS);
+                content = writer.ToString();
+            }
+            //save to file
+            using (StreamWriter stream_writer = new StreamWriter(path))
+            {
+                stream_writer.Write(content);
+            }
+        }
+
+        /// <summary>
+        /// xml 鏂囦欢鍙嶅簭鍒楀寲涓哄璞�
+        /// </summary>
+        /// <typeparam name="T">搴忓垪鍖栫被鍨�</typeparam>
+        /// <param name="path">the path of the xml file</param>
+        /// <returns>瀵硅薄</returns>
+        public static T DeserializeFromXml<T>(string path)
+        {
+            XmlSerializer serializer = new XmlSerializer(typeof(T));
+            using (StreamReader reader = new StreamReader(path))
+            {
+                return (T)serializer.Deserialize(reader);
+            }
+        }
+        public static bool ReadFromXml<T>(T obj, string path)
+        {
+            XmlDocument xd = new XmlDocument();
+            xd.Load(path);
+
+            Type type = typeof(T);
+            XmlNode root = xd.SelectSingleNode(type.Name);
+            if (root == null)
+            {
+                return false;
+            }
+
+            //鑾峰彇 RefHero 涓墍鏈夌殑瀹炰緥绉佹湁瀛楁
+            FieldInfo[] fieldArray = type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
+            foreach (FieldInfo filed in fieldArray)
+            {
+                string fileName = filed.Name;
+                XmlNode node = root.SelectSingleNode(fileName);
+                if (node == null)
+                {
+                    continue;
+                }
+                filed.SetValue(obj, node.InnerText);
+            }
+            return true;
+        }
+
+        public static T DeepClone<T>(T data)
+        {
+            using (MemoryStream stream = new MemoryStream())
+            {
+                XmlSerializer serializer = new XmlSerializer(typeof(T));
+                serializer.Serialize(stream, data);
+                stream.Seek(0, SeekOrigin.Begin);
+                return (T)serializer.Deserialize(stream);
+            }
+        }
+    }
+}

--
Gitblit v1.9.1