• 111

    将对象保存到指定路径中,及读取方法

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TiianmaoShop
    {
        /// <summary>
        /// 文件操作工厂
        /// </summary>
        public class FFactory
        {
    
    
            /// <summary>
            /// 将对象保存到指定路径中,
            /// 注:因为要保的是对象,所以要在保存的类前面要加上序列化[Serializable],
            /// 序列化:就是把一个整体打散成若干个颗粒
            /// 如:
            /// [Serializable]
            /// public class Goods
            /// {
            /// }
            /// </summary>
            /// <param name="path">要保存的路径,如:C:\a.obj,a.obj是自己的取的文件名和扩展名,可以随便取,没有的路径都会自动生成</param>
            /// 注:路径可以随便写,会自动生成:如:C:\A\B\C\test.obj 程序会自动生成A,B,C目录
            /// <param name="obj">要保存的对象,object:所有类的父基类</param>
            public static void SaveObject(string path,object obj)
            {
                IFormatter formatter = new BinaryFormatter();
                try
                {
                Stream stream = new FileStream(@"" + path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
                    formatter.Serialize(stream, obj);
                    stream.Close();
                    Console.WriteLine("[" + path + "]文件保存成功...");
                    //将对象写入到本地
                }
                catch (Exception)
                {
                    Console.WriteLine("[" + path + "]文件保存失败...");
                }
                
            }
            /// <summary>
            /// 从指定的路径中取出文件,返回指定的类型
            /// T:是指泛型
            /// Read<Hero>那么所有的T都会被换成Hero类
            /// 如:Hero h = FFactory.Read<Hero>("C:\hero.obj");
            /// </summary>
            /// <typeparam name="T">返回指定的类型</typeparam>
            /// <param name="path">文件的路径</param>
            /// <returns></returns>
            /// 
    
    
    
    
    
            public static T ReadObject<T>(string path)
            {
                try
                {
                    IFormatter formatter = new BinaryFormatter();
                    Stream stream = new FileStream(@"" + path, FileMode.Open, FileAccess.Read, FileShare.None);
                    T myObj = (T)formatter.Deserialize(stream);
                    stream.Close();
                    return myObj;
                }
                catch (Exception)
                {
                    if (File.Exists(path))//如果文件不存在,创建文件
                    {
                    }
                    else
                    {
                        File.Create(path).Dispose();
                    }
                }
                //catch 
    
                T t =default(T);
                return t;
            }
            /// <summary>
            /// 将一个字符串内容写入到指定的目录文件中
            /// </summary>
            /// <param name="path">要写入的目录包括文件名</param>
            /// <param name="content">要写入的内容</param>
            /// <param name="append">是否要追加还是覆盖</param>
            public static void SaveText(string path,string content,bool append = false)
            {
                if (append)
                {
                    //追加到原来内容的后面
                    File.AppendAllText(path, content);
                }
                else
                {
                    //覆盖原来的内容
                    File.WriteAllText(path, content);
                }
            }
            /// <summary>
            /// 从指定的目录中读取文件内容
            /// </summary>
            /// <param name="path">要读取的目录</param>
            /// <returns></returns>
            public static string ReadText(string path)
            {
                string str =  File.ReadAllText(path);
                return str;
            }
        }
    }
    
    

    读取xml,保存

    public static Dictionary<int,goods> readXML(string url)
            {
                XElement xe = XElement.Load(url);
                var elements = from ele in xe.Elements()
                               select ele;
    
                Dictionary<int,goods> dictionary = new Dictionary<int, goods>();
    
                foreach (var ele in elements)
                {
                   int  GoodsId = Convert.ToInt32(ele.Attribute("id").Value);
                   string GoodsName = ele.Element("name").Value;
                    int GoodsStock = Convert.ToInt32(ele.Element("stock").Value);
                   int  GoodsPrice = Convert.ToInt32(ele.Element("price").Value);
                    goods goods = new goods(GoodsId,GoodsName,GoodsPrice,GoodsStock );
                    dictionary.Add(goods.Id, goods);
                }
                return dictionary;
            }
            /// <summary>
            /// 根据id修改XML文件
            /// </summary>
            /// <param name="url">要修改的目录文件路径</param>
            /// <param name="id">商品编号</param>
            /// <param name="list">商品信息</param>
            public static void change(string url, int id, Dictionary<int, goods> dictionary)
            {
                XElement xe = XElement.Load(@url);
                //int goodID = id;
                var elements = from ele in xe.Elements()
                               where (string)ele.Attribute("id") == id + ""
                               select ele;
                if (elements.Count() > 0)
                {
    
                    XElement first = elements.First();
                    ///设置新的属性
                    first.SetAttributeValue("id", id);
                    ///替换新的节点
                    first.ReplaceNodes(
                             new XElement("name", dictionary[id].Name),
                             new XElement("stock", dictionary[id].Number),
                             new XElement("price", dictionary[id].Money)
                             );
                }
                xe.Save(@url);
                Console.WriteLine("修改成功!");
            }
    
    

    XML格式:

    <?xml version="1.0" encoding="utf-8"?>
    <Phones>
      <!--记录手机的信息-->
      <phone id="1011">
        <name>OPPOFindX</name>
        <stock>50</stock>
        <price>4000</price>
      </phone>
      <phone id="1022">
        <name>iphoneX</name>
        <stock>50</stock>
        <price>6000</price>
      </phone>
      <phone id="1033">
        <name>小米9</name>
        <stock>50</stock>
        <price>3000</price>
      </phone>
      <phone id="1044">
        <name>华为P30</name>
        <stock>50</stock>
        <price>7000</price>
      </phone>
    </Phones>
    
    展开全文
  • &...XmlDocument xml; string path=Application.StartupPath + "\\功能测试参数.xml";  if(System.IO.File.Exists(path)) {  xml = new XmlDocument();  doc.Load(path);...
    <code class="language-csharp">XmlDocument xml;  string path=Application.StartupPath + "\\功能测试参数.xml";
      if(System.IO.File.Exists(path))
      {
          xml  = new XmlDocument();
          doc.Load(path); //加载XML文档
      }
      else
      {
          xml = new XmlDocument();            //创建根节点 config
          xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", ""));
          XmlElement one = xml.CreateElement("功能测试参数"); //把根节点加到xml文档中
          xml.AppendChild(one);
      }
      XmlElement two = xml.CreateElement(comboBox1.Text);
      one.AppendChild(two);
      XmlElement three = xml.CreateElement("测试项目");
      foreach (string item in listBox1.Items)      //每次需要保存的东西
      {
          string str = "项目" + i.ToString();
          i++;
          three.SetAttribute(str, item);
          //str=item
      }
      two.AppendChild(three);
      xml.Save(path);</code> 

     

    展开全文
  • C#--对象转成XML的方法

    2019-07-30 21:48:08
    public static XmlDocument JsonToXml(OrderDetail orderDetail) { XmlDocument document = new XmlDocument(); StringBuilder sb = new StringBuilder(); usin...
     public static XmlDocument JsonToXml(OrderDetail orderDetail)
            {
                XmlDocument document = new XmlDocument();
                StringBuilder sb = new StringBuilder();
                using (TextWriter tw = new StringWriter(sb))
                {
                    var xmlS = new XmlSerializer(typeof(OrderDetail));
                    xmlS.Serialize(tw, orderDetail);
                    string serialized = sb.ToString();
                    serialized = serialized.Replace(@"xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""", "");
                    serialized = serialized.Replace(@"xmlns:xsd=""http://www.w3.org/2001/XMLSchema""", "");
                    document.LoadXml(serialized);
                }
    
                return document;
            }

     

    转载于:https://www.cnblogs.com/BounceGuo/p/10979618.html

    展开全文
  • 今天分享一下c#是如何操作xml的。 大纲: 1.创建XML并实现保存 2.向XML中添加属性 3.向XML中追加内容 4.读取XML文件 5.读取带属性XML文件,含有移除(有一句提到) 1.创建XML并实现保存 首先,我们要...

    by 刘壮 | 2016/04/25 23:14

    你好,我曾经接过一个上海的上机面试题,涉及到xml。今天分享一下c#是如何操作xml的。

    大纲:
    1.创建XML并实现保存
    2.向XML中添加属性
    3.向XML中追加内容
    4.读取XML文件
    5.读取带属性的XML文件,含有移除(有一句提到)

    1.创建XML并实现保存
    首先,我们要实现添加不含属性的xml文档。这里给出一个类,和一个调用方法以及贴出效果图(案例中我用的中文xml,希望不给你带来观看效果)

    public static void CreateXML(string xmlName)
            {
                //通过代码创建XML文档
                //1、引用命名空间   System.Xml
                //2、创建一个 xml 文档
                XmlDocument xml = new XmlDocument();
                //3、创建一行声明信息,并添加到 xml 文档顶部
                XmlDeclaration decl = xml.CreateXmlDeclaration("1.0", "utf-8", null);
                xml.AppendChild(decl);
    
                //4、创建根节点
                XmlElement rootEle = xml.CreateElement("人");
                xml.AppendChild(rootEle);
                //5、创建子结点|属性:性别
                XmlElement childEle = xml.CreateElement("性别");
                rootEle.AppendChild(childEle);
    
                XmlElement c2Ele = xml.CreateElement("男");
                c2Ele.InnerText = "1";
                childEle.AppendChild(c2Ele);
                c2Ele = xml.CreateElement("女");
                c2Ele.InnerText = "0";
                childEle.AppendChild(c2Ele);
    
    
                //6、创建子节点|属性:四肢
                childEle = xml.CreateElement("胳膊");
                rootEle.AppendChild(childEle);
    
                c2Ele = xml.CreateElement("右胳膊");
                c2Ele.InnerText = "一般";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("左胳膊");
                c2Ele.InnerText = "一般";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("左退");
                c2Ele.InnerText = "粗壮";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("右腿");
                c2Ele.InnerText = "粗壮";
                childEle.AppendChild(c2Ele);
    
                xml.Save(xmlName);
    
            }

    调用方法:

     CreateXML("People.xml");

    效果图:
    这里写图片描述

    2.向XML中添加属性

    在上面的类中, 最后的xml.Save(xmlName);前添加下面的代码

                //添加带有属性的节点
                childEle = xml.CreateElement("hair");
                childEle.SetAttribute("Color", "black");
                childEle.InnerText = "头发";
                rootEle.AppendChild(childEle);
    
    

    运行,查看你的xml文档,就会多出来一行:

      <hair Color="black" />

    效果如图:
    这里写图片描述

    3.向XML中追加内容
    创建一个控制台程序:
    Main函数如下:

         static void Main(string[] args)
            {
                //创XML建对象
                XmlDocument doc = new XmlDocument();
                //声明根节点
                XmlElement books;
                //判断文件是否存在
                if (File.Exists("Books.xml"))
                {
                    //该文件存在
                    //加载文件
                    doc.Load("Books.xml");
                    //获得根节点
                    books = doc.DocumentElement;
    
                }
                else//该文件不存在
                {
                    //创建声明
                    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                    doc.AppendChild(dec);
                    //创建根节点
                    books = doc.CreateElement("Books");
                    doc.AppendChild(books);
                }
    
                //开始正常写入信息就可以了
                XmlElement book1 = doc.CreateElement("Book");
                books.AppendChild(book1);
    
                XmlElement name = doc.CreateElement("Name");
                name.InnerText = "大话西游"+(new Random()).Next(0,1000);
                book1.AppendChild(name);
    
                doc.Save("Books.xml");
                Console.WriteLine("追加完成");
                Console.ReadKey();
            }

    运行两次,效果图:
    这里写图片描述
    4.读取XML文件
    这里没有详细写,重点在第5条。你可以找到答案

                //获得子节点   返回数组
                XmlNodeList xnl =  books.ChildNodes;
                foreach (XmlNode  item in xnl)
                {
                    Console.WriteLine(item.InnerXml+":"+ item.InnerText);
                }

    5.读取带属性的XML文件
    创建一个控制台程序,你不需要关心xml的创建等等,我写好了,都在这里Program.cs代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    
    namespace _027创建XML文档
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                CreateXML("People.xml");
                ReadXML("People.xml");
                Console.WriteLine("创建成功");
                Console.ReadKey();
            }
            public static void ReadXML(string filename)
            {
                //创建对象
                XmlDocument xml = new XmlDocument();
                //加载 xml 文件
                xml.Load(filename);
                //获取根节点
                XmlElement rootEle = xml.DocumentElement;
    
                //获取子节点集合
    
                XmlNodeList xnl = xml.SelectNodes("/人/胳膊/左胳膊");
                foreach (XmlNode item in xnl)
                {
                    Console.WriteLine(item.Attributes["毛"].InnerText);// .Value);
                    //Console.WriteLine(item.Attributes["Hair"].Value);
                }
                //5、移除
                //xnl.RemoveAll();
            }
            public static void CreateXML(string xmlName)
            {
                //通过代码创建XML文档
                //1、引用命名空间   System.Xml
                //2、创建一个 xml 文档
                XmlDocument xml = new XmlDocument();
                //3、创建一行声明信息,并添加到 xml 文档顶部
                XmlDeclaration decl = xml.CreateXmlDeclaration("1.0", "utf-8", null);
                xml.AppendChild(decl);
    
                //4、创建根节点
                XmlElement rootEle = xml.CreateElement("人");
                xml.AppendChild(rootEle);
                //5、创建子结点|属性:性别
                XmlElement childEle = xml.CreateElement("性别");
                rootEle.AppendChild(childEle);
    
                XmlElement c2Ele = xml.CreateElement("男");
                c2Ele.InnerText = "1";
                childEle.AppendChild(c2Ele);
                c2Ele = xml.CreateElement("女");
                c2Ele.InnerText = "0";
                childEle.AppendChild(c2Ele);
    
    
                //6、创建子节点|属性:四肢
                childEle = xml.CreateElement("胳膊");
                rootEle.AppendChild(childEle);
    
                c2Ele = xml.CreateElement("右胳膊");
                c2Ele.InnerText = "一般";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("左胳膊");
                c2Ele.SetAttribute("毛", "真密");
                c2Ele.InnerText = "一般";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("左退");
                c2Ele.InnerText = "粗壮";
                childEle.AppendChild(c2Ele);
    
                c2Ele = xml.CreateElement("右腿");
                c2Ele.InnerText = "粗壮";
                childEle.AppendChild(c2Ele);
    
                //添加带有属性的节点
                childEle = xml.CreateElement("hair");
                childEle.SetAttribute("Color", "black");
                childEle.InnerText = "头发";
                rootEle.AppendChild(childEle);
    
                xml.Save(xmlName);
    
            }
        }
    }
    

    运行,你会得到:“真密”

    结束!!!
    Web前后端技术交流群:
    点击链接加入群【Web前后端技术①群】:http://jq.qq.com/?_wv=1027&k=29uDHtR

    展开全文
  • C#对象转换成XML

    2019-06-30 12:04:29
    要转换成xml的类 public class Student {  public Student(){}  public Student(string name,int age,int sex)  {  this.name=name;  this.age=age;  this.sex=sex;  }  private int age;  pr...

    要转换成xml的类

    public class Student
    {
      public Student(){}
      public Student(string name,int age,int sex)
      {
        this.name=name;
        this.age=age;
        this.sex=sex;
      }
      private int age;
      private string name;
      private int sex;
    }

    把对象保存成xml

    private void objToXml()
    {
      Student s = new Student("John",24,1);
      XmlSerializer xs = new XmlSerializer(s.GetType());
      TextWriter tw=new StreamWriter("C:/Myxml.xml");
      xs.Serialize(tw,s);
      tw.Close();
    }
    


    保存的Myxml.xml内容如下

    <?xml version=”1.0″ encoding=”utf-8″?>
    <Student xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    可以看到xml文件中并没有我们保存的类信息,这是由于Student类中用的是字段,把字段封装成属性后得到如下结果:

    <?xml version=”1.0″ encoding=”utf-8″?>
    <Student xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
    <Age>24</Age>
    <Name>Joss</Name>
    <Sex>1</Sex>
    </Student>

     

    转载于:https://www.cnblogs.com/ecosu/p/4285898.html

    展开全文
  • 这两天项目开发过程中遇到的一个问题,就是PropertyGrid控件的对象属性值修改后怎么写回到xml中的问题 由于属性项不统一,不能每个类的属性都去写一个单独的方法,这样需啊的类和方法就特别多,处理起来也特别麻烦...
  • .Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化。  System.Xml.Serialization命名空间中有一系列的...
  • C#xml文件并保存

    2014-10-28 16:51:29
    using System; using System.Xml; namespace ConsoleApplication3 { class Program { static void Main(string[] args) ...XmlDocument doc = new XmlDocument()... // 创建dom对象 XmlElement root = doc.Create
  • ///  /// XMLHelper  ///  public static class XMLHelper  {  ///  /// 反序列化  ///  /// 类型  /// XML字符串  ///  public static objec
  • 原文在百度知道中,来源于多个网友。 ... (一) ...保存 var xml =XElement.Load(@"路径"); xml.Element("节点名字").AddAfterSelf(new XElement("节点名字","要添加的值")); xml,Save(@"路径");
  • C#的动态对象属性实现比较简单,如果要实现动态语言那种动态方法就比较困难,因为对于dynamic对象,扩展方法,匿名方法都是不能用直接的,这里还是利用对象和委托来模拟这种动态方法的实现,看起来有点javascript的对象...
  • C#XML、JSON等格式的解析一、C#XML格式数据的解析1、用XMLDocument来解析 XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load("test.xml"); //创建新节点 XmlElement nn = xmlDocument....
  • http://www.cnblogs.com/kiddo/archive/2007/09/03/879932.html2007-06-08 17:55下面这个xml 文件,要找的路径是"WTTData"Component"ComponentData"ComponentData"ObjectQueryBuilder 找属性field为datastore的expr
  • C#使用linq to xml完成对XML文件的创建、增加、删除、修改、查询
  • C#代码创建Xml文件

    2016-10-21 09:37:04
    扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的。做为用于替代HTML语言的一种新型的标记语言,XML内部有着很多基本标准,XML就是通过与这些相关标准地结合,应用于科学计算、电子出版、多媒体...
  • System.Xml.XmlDocumentdoc=newSystem.Xml.XmlDocument(); doc.LoadXml(@"<Root><Version>1.0.0.0</Version><name></name><age></age></Root>"); //Create...
  • 本文描述如何使用CLR中的StringWriter,XmlSerializer将对象对象集合序列化为Xml格式的字符串, 同时描述如何进行反序列化.  C#版本: C# 3.0  开发环境: VS 2008  主要方法:  复制 保存using System; ...
  • 1.创建xmlpublic void CreateXml() { //创建一个XML文档对象 XmlDocument doc = new XmlDocument(); //声明XML头部信息 XmlDeclaration dec = doc.CreateXmlDeclaration("...
  • C#开发学习笔记:xml文件的写入操作
  • 1.根据Xml生成TreeView 2.双击修改节点 3.右键添加子节点或添加要节点 4.右键删除当前选择的节点 5.将修改后的TreeView重新生成Xml文档 源码下载 TreeLoadXml.rar (24.14 KB, 下载次数: 627) 只有注册...
1 2 3 4 5 ... 20
收藏数 26,787
精华内容 10,714