在实例转换为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} }