我需要根据网络服务类型规范序列化一些 Xml。由于某些原因,我创建了几个不同的类来封装我的应用程序的信息。这些类不直接匹配 xml 架构。见下文。
<TopLevel>
<InfoString>Value</InfoString>
<InfoInt>242</InfoInt>
<Etcetera>Value2</Etcetera>
</TopLevel
虽然我的类(class)是这样的:
public class Info
-InfoString
-InfoInt
public class Etcetera
-EtceteraValue
这会产生不正确的 Xml,因为有一个元素 Info 包含 InfoString,而 Etcetera 元素包含 EtceteraValue。
我实现了 IXmlSerializable,但 XmlSerializable 仍然写入我的类的根级别。有什么想法吗?
为清楚起见:我正在尝试将多个类序列化到同一文档中的同一级别。
最佳答案
我认为这是不可能的,因为如果不止一个类具有同名属性,序列化程序可以生成无法明确反序列化的 xml。
要么您完全自己进行序列化,要么使用 XSLT 将输出转换为您需要的 xml 格式。
我过去所做的是创建传输类,它具有正确的结构,可以准确地序列化为我想要的格式。您只需将原始对象中的值填充到传输对象中即可。
编辑另一个想法:
您可以使用 LINQ 表达式从对象中查询所需格式的所有数据。之后,您可以使用 LINQ to XML 将结果序列化为 xml。我以前从未这样做过,如果你有幸做到这一点,请告诉我。
关于c# - 使用 .Net XmlSerializer,有没有办法省略根级标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664923/