【发布时间】:2012-02-09 19:18:46
【问题描述】:
我在关注以下 XML 序列化输出:
<?xml version="1.0"?>
<Message>
<Version>1.0</Version>
<Body>
<ExampleObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EmampleOne>Hello!</EmampleOne>
</ExampleObject>
</Body>
</Message>
我有以下课程:
[Serializable]
public class Message<T>
{
public string Version { get; set; }
public T Body { get; set; }
}
[Serializable]
public class ExampleObject
{
public string EmampleOne { get; set; }
}
如果我分别序列化它们,我会得到:
<?xml version="1.0"?>
<Message>
<Version>1.0</Version>
<Body>
<EmampleOne>Hello!</EmampleOne>
</Body>
</Message>
还有:
<?xml version="1.0"?>
<ExampleObject>
<EmampleOne>Hello!</EmampleOne>
</ExampleObject>
如上所示,我希望内部主体包含类名<ExampleObject>。
我使用泛型,因为我需要有不同的消息体,我用代码序列化:
var obj = new Message<ExampleObject>
{
Version = "1.0",
Body = example
};
var serializer2 = new XmlSerializer(typeof (Message<ExampleObject>));
【问题讨论】:
-
要做到这一点而不实现 IXmlSerializable 将需要更改对象模型并使用 XmlAttributeOverrides - 可行但并非微不足道。我目前不在 PC 上,但可能稍后再看。我想知道直接写一个 DOM 会不会更容易...
-
仅供参考,XML 序列化程序不使用“[Serializable]”。
标签: c# .net xml serialization xml-serialization