【发布时间】:2019-04-14 08:03:07
【问题描述】:
我尝试在序列化为 XDocument 时更改根名称。
我尝试序列化一个(n 内部)类并获取根名称Test.MyClass。
我尝试使用XmlRoot 属性更改它,但没有任何反应。更改根名称的技巧是什么?还是我将 XDocument 用于它不能做的事情?
[TestClass]
public class MyTestClass
{
[TestMethod]
public void TestMethod()
{
var res = Serialise(new MyClass());
}
private static XDocument Serialise(object objectToSerialize)
{
var doc = new XDocument();
using (var writer = doc.CreateWriter())
{
var serializer = new DataContractSerializer(objectToSerialize.GetType());
serializer.WriteObject(writer, objectToSerialize);
}
return doc;
}
[XmlRoot("NewName")]
public class MyClass { }
}
我明白了
<MyTestClass.MyClass/>
但我想要
<NewName/>
【问题讨论】:
-
DataContractSerializer 序列化程序无法识别 XmlRoot 属性。请改用 XmlSerializer。
-
如in the documentation 所述,您需要在要使用
DataContractSerializer的类上使用DataContract或Serializable属性。 -
@jdweng 您的评论可能和 Heritic Monkey 的一样好,但我选择后者作为答案。老实说:我一开始就不太喜欢我的问题——因为缺乏研究。为问题辩护:处理 Xml 的功能很复杂,很难找出做事的“正确方法”。
标签: c# xml serialization