XML(子节点序列化反序列对象)读写
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
using System.Web;
namespace ConsoleApplication19
{
    [DataContract]
    public class Student
    {
        [DataMember]
        public int? stuNo{get;set;}
[DataMember]
        public string Name{get;set;}
[DataMember]
        public string Sex{get;set;}
        [DataMember]
        public Decimal Age{get;set;}
    }
    class Program
    {
        /// <summary>
        /// 在xml中获得实体配置
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static object getXmlInfo(Student obj)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Student));
            object s;
            using (MemoryStream ms = new MemoryStream())
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(("/Config/DefaultFormValue.xml"));
                //xmlDoc.Load(@"C:\Users\Hom\Documents\visual studio 2013\Projects\getXml\getXml\student.xml");
                XmlNode tempNode = xmlDoc.SelectSingleNode("/Initialization/" + typeof(Student).Name);
                if (tempNode != null)
                {
                    XmlDocument tempDoc = new XmlDocument();
                    XmlDeclaration xmldecl;
                    xmldecl = tempDoc.CreateXmlDeclaration("1.0", "utf-8", null);
                    tempDoc.AppendChild(xmldecl);
                    XmlNode temRoot = tempDoc.CreateElement(typeof(Student).Name);
                    tempDoc.AppendChild(temRoot);
                    temRoot.InnerXml = tempNode.InnerXml;
                    //tempDoc.Save(@"C:\Users\Hom\Documents\visual studio 2013\Projects\getXml\getXml\student1.xml");
                    tempDoc.Save(ms);
                    ms.Seek(0, SeekOrigin.Begin);
                    s = serializer.Deserialize(ms);
                }
                else
                {
                    s = null;
                }
            }
            return s;
        }
        /// <summary>
        /// 在xml中写入默认配置
        /// </summary>
        /// <param name="obj"></param>
        public static void setXmlInfo(Student obj)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Student));
            using (MemoryStream ms = new MemoryStream())
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(("DefaultFormValue.xml"));
                //xmlDoc.Load(@"C:\Users\Hom\Documents\visual studio 2013\Projects\getXml\getXml\student.xml");
                XmlNode tempNode = xmlDoc.SelectSingleNode("/Initialization/" + typeof(Student).Name);
                if (tempNode == null)
                {
                    serializer.Serialize(ms, obj);
                    XmlDocument tempDoc = new XmlDocument();
                    tempDoc.LoadXml(Encoding.UTF8.GetString(ms.ToArray()));
                    XmlElement element = xmlDoc.CreateElement(typeof(Student).Name);
                    element.InnerXml = tempDoc.SelectSingleNode(typeof(Student).Name).InnerXml;
                    XmlNode root = xmlDoc.SelectSingleNode("Initialization");
                    root.AppendChild(element);
                    xmlDoc.Save(("DefaultFormValue.xml"));
                    //xmlDoc.Save(@"C:\Users\Hom\Documents\visual studio 2013\Projects\getXml\getXml\student.xml");
                }
            }
        }
        static void Main(string[] args)
        {
            Student s = new Student() { stuNo=1, Name="1",Sex="1",Age=1 };
            setXmlInfo(s);
            Console.ReadKey();
        }
    }
}
XML(子节点序列化反序列对象)读写的更多相关文章
- wp8.1 Study11:APP里文件读写和使用XML和Json序列化
		一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ... 
- 递归遍历所有xml的节点及子节点
		import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; i ... 
- dom4j解析xml获取所有的子节点并放入map中
		dom4j递归解析所有子节点 //解析返回的xml字符串,生成document对象 Document document = DocumentHelper.parseText(resultXml); / ... 
- 获取$(this)子节点对象的方法
		获取$(this)子节点对象的方法: 1.children()方法: children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 2.find()方法: fi ... 
- C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)
		最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来 ... 
- .NET调用外部接口将得到的List数据,并使用XmlSerializer序列化List对象成XML格式
		BidOpeningData.BidSupervisionSoapClient client = new BidOpeningData.BidSupervisionSoapClient(); Dict ... 
- 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
		/** 转换成XML格式字符串 **/ public static String doXMLStr(Map<String, String> map) { StringBuffer xml_ ... 
- xml去除指定节点,保留子节点操作
		现有xml文件: <?xml version="1.0" encoding="utf-8" ?> <ShiftConfig xmlns:xsi ... 
- 解析xml节点属性及子节点内容
		xml样例 <microNearlyThreeYearsOverdueInfo subReportType="13204" subReportTypeCost="9 ... 
随机推荐
- ConcurrentLinkedQueue 模拟火车售票过程
			火车票类 public class Ticket { private String NO; // 车票编号 private double price; // 票价 public Ticket(Stri ... 
- TCP之二:TCP的三次握手与四次分手
			一.TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础 ... 
- Java堆外内存之一:堆外内存场景介绍(对象池VS堆外内存)
			最近经常有人问我在Java中使用堆外(off heap)内存的好处与用途何在.我想其他面临几样选择的人应该也会对这个答案感兴趣吧. 堆外内存其实并无特别之处.线程栈,应用程序代码,NIO缓存用的都是堆 ... 
- 纯css实现点击事件
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- IT运维的定义
			IT运维是IT管理的核心和重点部分,也是内容最多.最繁杂的部分,该阶段主要用于IT部门内部日常运营管理,涉及的对象分成两大部分,即IT业务系统和运维人员,该阶段的管理内容又可细分为七个子系统: ... 
- Django前端的文本编辑器,滑动登陆
			文本编译器 # 添加文章 url(r'^addarticle/$', views.addarticle), # 利用文本编辑器添加文章 def addarticle(request): ''' 添加文 ... 
- 十七  能停止的线程   暴力停止 和 interrupt/return方法
			1:stop: 使用stop() 停止的线程则是非常暴力的. stop() 已经废弃了,因为: 1 如果强制停止则有可能使得一些清理工作得不到完成. 2 对锁定的对象进行了“解锁”,导致数据得不到同步 ... 
- Jquery 页面初始化常用的三种方法以及Jquery 发送ajax 请求
			第一种 $(document).ready(function(){ //文档就绪事件 }); 第二种是第一种的简略写法,效果上和第一种是等效的. $(function(){ //文档加载事件,整个文档 ... 
- linux-强制断开远程tcp连接
			最近在做日常维护,搭建了socks代理,但是socks代理服务已经关闭了,由于其他机器还在和我的服务器保持tcp长连接 e.g. tcp ESTAB Google了一下,没找到特别好的办法,例如ipt ... 
- JavaScript Post提交数据并跳转到页面(模拟Form表单提交)
			function GotoWatchTicketCode() { var orderID='@ViewBag.OrderInfo.OrderID'; var phoneNum='@ViewBag.Or ... 
