我有兩個類A和B.A具有B的一個實例,當序列化A時,我希望B與A的級別相同而不是子元素。將類變量序列化爲xml而不創建新元素
所以我想生成的XML成爲
<a> <avalue>a</avalue> <bvalue>b</bvalue> </a>
該計劃會將中的B它自己的元素作爲
<a> <avalue>a</avalue> <b> <bvalue>b</bvalue> </b> </a>
public class A
{
public string avalue = "a";
public B b = new B();
}
public class B
{
public string bvalue = "b";
}
class Program
{
static void Main(string[] args)
{
var a = new A();
var xml = new XmlSerializer(a.GetType());
xml.Serialize(new StreamWriter(@"c:\temp\tmp.xml"), a);
}
}
PS:這個必須已經問過,但我我不知道要搜索什麼。我的谷歌福變成了空......
編輯:
,我希望避免「包裝」解決方案,如果可能的:你需要做B房產和標記
public class A
{
public string avalue = "a";
[XmlIgnore]
public B b { get; set; }
[XmlElement("bvalue")]
public string bvalue
{
get { return b.bvalue; }
set { b.bvalue = value; }
}
}
看起來不起作用:「XmlAttribute/XmlText不能用於編碼複雜類型」 – simendsjo 2010-09-20 11:23:20