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进行序列化与反序列化吗?
如果知道的,请帖详细代码,谢了!
刚申请的号,分不多,见谅!
展开
 我来答
fej121121
2012-08-30 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:536万
展开全部
你是要控制序列化后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);
}
}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式