在實例轉換爲XML的過程中,如果實例存在循環引用的結構,則在轉換爲XML的過程中會拋異常:
序列化類型 xxxxx 的對象時檢測到循環引用
解決方法是,在循環引用的字段前面加上一段修飾語句
[System.Xml.Serialization.XmlIgnore]
這樣在序列化的時候,系統會自動忽略該字段實例的序列化
.net與Java最大的不同在於,XML結構的字段是值傳遞,而.net是引用傳遞
例如一段JAVA代碼
class A
{
public int field1;
public String field2;
public A parent;
}
//JAVA值傳遞例子
void test1()
{
A a = new A();
a.field1 = 1;
a.field2 = "21";
a.parent = a;
}
此時 a的結構不是循環結構·
a={field1 = 1, field2 = "21" parent = { field1 = 1, field2 = "21" parent = null} }
class A
{
private int field1;
public void setField1(int _field1){
field1 = _field1;
}
private String field2;
public void setField2(String _field2){
field2 = _field2;
}
private A parent;
public void setParent(A _a){
parent= _a;
}
}
//JAVA引用傳遞例子
void test1()
{
A a = new A();
a.setField1(1);
a.setField2("21");
a.setParent(a);
}
此時 a的結構是循環結構·
a={field1 = 1, field2 = "21" parent = { field1 = 1, field2 = "21" parent = a} }
對於.net
class A
{
public int field1;
public String field2;
public A parent;
}
//.net引用傳遞例子
void test1()
{
A a = new A();
a.field1 = 1;
a.field2 = "21";
a.parent = a;
}
此時 a的結構是循環結構·
a={field1 = 1, field2 = "21" parent = { field1 = 1, field2 = "21" parent = a} }