gpt4 book ai didi

c# - 自定义 XML 序列化 - 包括类名

转载 作者:数据小太阳 更新时间:2023-10-29 02:09:07 25 4
gpt4 key购买 nike

我正在寻找以下 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>

我有以下类(class):

[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>));

最佳答案

正如@Marc Gravell 在他的评论中所建议的那样,您可以使用 XmlAttributeOverrides :

var xmlOverrides = new XmlAttributeOverrides();
var attributes = new XmlAttributes();
attributes.XmlElements
.Add(new XmlElementAttribute("ExampleObject", typeof (ExampleObject)));
xmlOverrides.Add(typeof(Message<ExampleObject>), "Body", attributes);

var serializer2 = new XmlSerializer(typeof(Message<ExampleObject>), xmlOverrides);

关于c# - 自定义 XML 序列化 - 包括类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com