C#对象序列化问题

dream_flying 2009-09-27 07:43:20
在使用C#对象序列化的时候遇到点问题,
就是刚好有两个嵌套的list需要序列化,可最后序列化出来的结果却多套了一层,这个有不有什么好的办法可以解决的呀?多谢了:)

namespace MyTest.DataInfo
{
[Serializable]
[XmlRoot("CfgRoot")]
public class A_Info
{
// Serializes an ArrayList as a "A_Info_Tag" array
// of XML elements of custom type C_Info named "C_Info_Tag".
[XmlArray("AllList"),
XmlArrayItem("A_Info_Tag", typeof(B_Info))]
public System.Collections.ArrayList A_Info_TagList = new System.Collections.ArrayList(); //储存B_Info
}
}

namespace MyTest.DataInfo
{
[Serializable]
public class B_Info
{
[XmlAttribute]
public string name;

// Serializes an ArrayList as a "A_Info_Tag" array
// of XML elements of custom type C_Info named "C_Info_Tag".

//就是这儿,不知道到底该怎么序列化?这样序列化后,导致结果多了一层A_Info_Tag,参见下面的xml
[XmlArray("A_Info_Tag"),
XmlArrayItem("C_Info_Tag", typeof(C_Info))]
//[XmlArrayItemAttribute]
public System.Collections.ArrayList CbscList = new System.Collections.ArrayList(); //储存C_Info
}
}

namespace MyTest.DataInfo
{
[Serializable]
public class C_Info
{
[XmlAttribute]
public string name;

public string AdminPwd;
}
}


<CfgRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AllList>
<A_Info_Tag name="A_Info_Tag0">
<A_Info_Tag> //想把这层去掉,可总是不行
<C_Info_Tag name="c0">
<AdminPwd>password0</AdminPwd>
</C_Info_Tag>
<C_Info_Tag name="c1">
<AdminPwd>password1</AdminPwd>
</C_Info_Tag>
<C_Info_Tag name="c2">
<AdminPwd>password2</AdminPwd>
</C_Info_Tag>
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyren 2009-10-14
  • 打赏
  • 举报
回复
不知道,你试试吧
gisyellow 2009-10-12
  • 打赏
  • 举报
回复
用[XmlElement("C_Info_Tag")]试试。。
jimh 2009-10-12
  • 打赏
  • 举报
回复

//就是这儿,不知道到底该怎么序列化?这样序列化后,导致结果多了一层A_Info_Tag,参见下面的xml
//[XmlArray("A_Info_Tag"),
//XmlArrayItem("C_Info_Tag", typeof(C_Info))]
//[XmlArrayItemAttribute]
[XmlElement("C_Info_Tag")] //不需要数组,直接出Item
public System.Collections.ArrayList CbscList = new System.Collections.ArrayList(); //储存
ncjcz 2009-10-09
  • 打赏
  • 举报
回复
用[XmlElement("C_Info_Tag")]行不行?
much0726 2009-09-27
  • 打赏
  • 举报
回复
如果去掉,就少个嵌套就好了。
namespace MyTest.DataInfo
{
[Serializable]
[XmlRoot("CfgRoot")]
public class A_Info
{
// Serializes an ArrayList as a "A_Info_Tag" array
// of XML elements of custom type C_Info named "C_Info_Tag".
[XmlArray("AllList"),
XmlArrayItem("A_Info_Tag", typeof(C_Info))]
public System.Collections.ArrayList A_Info_TagList = new System.Collections.ArrayList(); //储存B_Info
}
}

//B_Info 的代码是没有用的
namespace MyTest.DataInfo
{
[Serializable]
public class B_Info
{
[XmlAttribute]
public string name;

// Serializes an ArrayList as a "A_Info_Tag" array
// of XML elements of custom type C_Info named "C_Info_Tag".

//就是这儿,不知道到底该怎么序列化?这样序列化后,导致结果多了一层A_Info_Tag,参见下面的xml
[XmlArray("A_Info_Tag"),
XmlArrayItem("C_Info_Tag", typeof(C_Info))]
//[XmlArrayItemAttribute]
public System.Collections.ArrayList CbscList = new System.Collections.ArrayList(); //储存C_Info
}
}

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧