序列化:
序列化方法:
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节点