【发布时间】:2017-03-22 20:37:47
【问题描述】:
我有一个包含 XElement 对象的类...
public class SomeClass
{
public string prop1 = "";
public string prop2 = "";
public XElement elem = null;
}
我稍后在代码中使用另一个内部定义的类对象的实例设置 XElement 属性...
UserFields userFields = new UserFields();
SomeClass sc = new SomeClass();
sc.prop1 = "Sam";
sc.prop2 = "Smith";
sc.elem = new XElement("UserFields", userFields);
问题是,当我使用 XmlSerializer 将类对象序列化为 XML 时,我只能获得 SomeClass.elem 属性的完全限定类名...
StringWriter sw = new StringWriter();
XmlSerializer x = new XmlSerializer(o.GetType());
x.Serialize(sw, o);
string xmlString = sw.ToString();
我把它作为输出...
<SomeClass>
<prop1>Sam</prop1>
<prop2>Smith</prop2>
<elem>MyNamespace.UserFields</elem>
</SomeClass>
XmlSerializer 似乎不太清楚如何处理 XElement 对象。我想找到一种方法从 XElement 对象中获取 XML 序列化为 XML 字符串,就像其他类对象一样。有什么想法吗?
【问题讨论】:
-
将
[XmlAnyElement]标记应用于elem属性是否会产生所需的输出? -
[XmlAnyElement]将完成这项工作,例如参见 this answer。
标签: c# serialization xelement