C# 关于XML序列化与反序列化的笔记

序列化:

        序列化方法:

        public static string SerializeXml(object data)
        {
            using (StringWriter sw = new StringWriter())
            {
                XmlSerializer xz = new XmlSerializer(data.GetType());
                xz.Serialize(sw, data);
                return sw.ToString();
            }
        }

如何去除命名空间?

<?xml version="1.0" encoding="utf-16"?>
<Hobby xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <name>打篮球</name>
  <year>两年半</year>
</Hobby>

想把上面改成下面:

<?xml version="1.0" encoding="utf-16"?>
<Hobby>
  <name>打篮球</name>
  <year>两年半</year>
</Hobby>

 如何做?----修改序列化方法,添加空命名空间

        public static string SerializeXml(object data)
        {
            using (StringWriter sw = new StringWriter())
            {
                XmlSerializer xz = new XmlSerializer(data.GetType());

                XmlSerializerNamespaces _namespaces = new XmlSerializerNamespaces(
                new XmlQualifiedName[] {
                        new XmlQualifiedName(string.Empty, string.Empty)
                 });
                xz.Serialize(sw, data, _namespaces);
                return sw.ToString();
            }
        }

如何修改节点名称?

想把节点【name】改成【名字】:

<?xml version="1.0" encoding="utf-16"?>
<Hobby>
  <名字>打篮球</名字>
  <year>两年半</year>
</Hobby>

如何做?----类中添加特性  ---  [XmlElement("名字")]

    public class Hobby
    {
        [XmlElement("名字")]
        public string name;
        public string year;
    }

!!!重点:修改集合节点名称

<?xml version="1.0" encoding="utf-16"?>
<Person>
  <name>张三</name>
  <hobbies>
    <Hobby>
      <名字>打篮球</名字>
      <year>两年半</year>
    </Hobby>
  </hobbies>
</Person>

修改集合名称 【hobbies】改成【爱好们】

修改集合元素名称【Hobby】改成【爱好】

<?xml version="1.0" encoding="utf-16"?>
<Person>
  <name>张三</name>
  <爱好们>
    <爱好>
      <名字>打篮球</名字>
      <year>两年半</year>
    </爱好>
  </爱好们>
</Person>

如何做?----类中添加xml特性,        [XmlArray("爱好们")]     [XmlArrayItem("爱好")]

    public class Person
    {
        public string name;
        [XmlArray("爱好们")]
        [XmlArrayItem("爱好")]
        public List<Hobby> hobbies;
    }

修改集合节点名称2

讲集合节点的名称合并,效果为

<?xml version="1.0" encoding="utf-16"?>
<Person>
  <name>张三</name>
  <我的爱好>
    <名字>打篮球</名字>
    <year>两年半</year>
  </我的爱好>
  <我的爱好>
    <名字>打篮球</名字>
    <year>两年半</year>
  </我的爱好>
</Person>

如何做?-----添加xml特性,[XmlElement("我的爱好")]

    public class Person
    {
        public string name;
        [XmlElement("我的爱好")]
        public List<Hobby> hobbies;
    }

注意:修改根节点名称用    [XmlRoot("Res")] 

但这个特性只适用于根节点,也就是样例中的Person节点

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值