用多个 XML 标签包装而不创建不同的类 C#

Posted

技术标签:

【中文标题】用多个 XML 标签包装而不创建不同的类 C#【英文标题】:Wrap with multiple XML tags without create diferent classes C# 【发布时间】:2020-12-30 08:45:57 【问题描述】:

我有课

    public class TestModel
    
        public int Number  get; set; 
        public string Text  get; set; 
    

用下面的xml转换成

<TestModel>
  <Number>2</Number>
  <Text>text</Text>
</TestModel>

但我需要用多个 xml 标签包装它

<Wrapper1>
   <Wrapper2>
      <TestModel>
         <Number>2</Number>
         <Text>text</Text>
      </TestModel>
   </Wrapper2>
</Wrapper1>

是否有任何属性可以放置这种类型的包装器?喜欢

[XElementWrapper("Wrapper1", "Wrapper2")]
public class TestModel

..

我不想创建虚拟类只是为了包含包装器或通过代码创建 xml 元素

【问题讨论】:

借助 .NET 中可用的所有其他 Xml 工具,您可以轻松地将序列化结果包装到根节点中,例如:XmlWriter,甚至可以使用 Xslt 转换您的 Xml... 没有。您不能使用属性创建其他标签。 【参考方案1】:

是的,你可以通过实现IXmlSerializable来实现

【讨论】:

以上是关于用多个 XML 标签包装而不创建不同的类 C#的主要内容,如果未能解决你的问题,请参考以下文章

为具有不同名称和不同@class 属性值的多个元素创建一个包装器元素

如何做多个不同的类来生成 XML?

C# 在 XmlSerializer 中使用结构而不创建单独的 xml 节点

如何解决具有不同包装常春藤类型的sbt中的依赖关系?

C#将不同类型的xml数组反序列化为多个数组

XSD:如何重新定义基本模式的标签