我想使用XmlSerializer序列化一个类,典型的东西。 我的唯一区别是我想将自定义对象“ ComplexType”序列化为属性,而不是子元素。
我看过其他堆栈溢出问题,答案说不可能。我知道那是错的。
错误类似于:
“ XmlAttribute / XmlText不能用于编码复杂类型。”
-或-
“ XmlAttribute / XmlText不能用于编码实现的类型 IXmlSerializable。”
只需将myfield从ComplexType更改为DateTime,它就可以正常工作。 DateTime肯定很复杂,所以我只需要知道要在类或属性中进行哪些更改即可。
例如:是
<Container myComplexType="specialencoding" />
例如:否
<Container>
<myComplexType>specialencoding</myComplexType>
</Container>
-看看第一个更好...我想要那个。
-代码就是这样...
[XmlRoot(ElementName="Container")]
public class Container
{
[XmlAttribute(AttributeName="myComplexType")]
public ComplexType myfield = new ComplexType();
}
public class ComplexType
{
public ComplexType(){}
public ComplexType(string encoding){}
public override string ToString() {return "specialencoding";}
}
如果我实现ComplexType:IXmlSerializable,则会收到上面的第二条错误消息。
使用的基本序列化器:
XmlSerializer serializer = new XmlSerializer(typeof(Container));
serializer.serialize("outfile.xml", new Container());
答案 0 :(得分:0)
尝试一下:
private ComplexType _myfield = new ComplexType();
[XmlAttribute(AttributeName = "myComplexType")]
public string myfield {
get { return _myfield.ToString();}
}
}
public class ComplexType
{
public ComplexType(){}
public ComplexType(string encoding){}
public override string ToString() {return "specialencoding";}
}