C# .Net Xml序列化与反序列化问题:Xml节点是动态的,不确定的,怎么构建实体类对Xml进行(反)序列化?
如下所示:<?xmlversion="1.0"encoding="utf-8"?><Result><A>1</A><E>2</E><D>3</D><G>4</G>.......
如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Result>
<A>1</A>
<E>2</E>
<D>3</D>
<G>4</G>
......
</Result>
这个Xml中,Result节点有多个子节点,具体个数不确定,节点名称不确定。
能通过构造数据实体类等方式对这样的Xml进行序列化与反序列化吗?
如果知道的,请帖详细代码,谢了!
刚申请的号,分不多,见谅! 展开
<?xml version="1.0" encoding="utf-8"?>
<Result>
<A>1</A>
<E>2</E>
<D>3</D>
<G>4</G>
......
</Result>
这个Xml中,Result节点有多个子节点,具体个数不确定,节点名称不确定。
能通过构造数据实体类等方式对这样的Xml进行序列化与反序列化吗?
如果知道的,请帖详细代码,谢了!
刚申请的号,分不多,见谅! 展开
1个回答
展开全部
你是要控制序列化后xml文件吗?正常情况下不需要控制序列化后的结果,否则需要实现IXmlSerializable接口,我实现过,很麻烦。
更多追问追答
追问
问题的本质其实就是:Xml中某个节点下到底有哪些子节点并不确定(子节点的名称不确定),怎么(反)序列化?
你能贴代码么?
追答
给你我写的序列化反序列化类吧,不用自己解析xml,免分送你一个xml深clone。。。
public class XmlSerialHelp
{
//定义Color属性的序列化为cat节点的属性 [XmlAttribute("color")]
//要求不序列化Speed属性 [XmlIgnore]
//设置Saying属性序列化为Xml子元素 [XmlElement("saying")]
public static void Serialize(T obj, string filePath)
{
if (File.Exists(filePath))
{
File.Delete(filePath);
}
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter.Serialize(fs, obj);
}
}
public static T DeSerialize(string filePath, object param)
{
T obj;
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
obj = (T)formatter.Deserialize(fs);
if (obj is IDeserializationCallbackCustom)
{
var zz = obj as IDeserializationCallbackCustom;
zz.OnDeserializationCustom(param);
}
}
return obj;
}
public static T Clone(T obj)
{
using (MemoryStream fs = new System.IO.MemoryStream())
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter.Serialize(fs, obj);
fs.Position = 0;
return (T)formatter.Deserialize(fs);
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询