c#serialization – 包含带属性的简单内容的复杂类型

我有一个现有的解决方案,它使用svcutil来创建一组基于XSD架构的类。 我现在不得不对该模式进行编辑,我遇到了一些绊脚石。

架构将使用以下类型进行扩展:

                      

这会导致XML输出如下:

  Dependent Independent  

当试图产生这种抱怨时,SVCUtil会窒息

“无法导入命名空间tt中的’AwkwardChild’类型。不支持具有简单内容扩展的复杂类型。更改架构以便类型可以映射到数据协定类型或使用ImporXmlType或使用不同的序列化程序。”

而且我认为我理解这一点,因为它试图输出字符串类型,但包含属性。

我试图弄清楚是否有一种方法可以手动编写一个类来实现这种输出,但我无法找到一种方法来使字符串在xml节点中显示为“简单内容”而不是作为子元素,例如这个类:

 [DataContractAttribute(Name = "AwkwardChild", Namespace = "tt")] public class Awkward { [DataContractAttribute(Name="id")] public string id { get; set; } //What do I put here to get this to appear as the content of //the awkward node, not in an element? public string nodecontent { get; set; } } 

有人能指出我正确的方向吗?

使用SVCUtil工具和XMLSerializer选项无法解决此问题。 最后,我不得不为这个实现IXmlSerializable的特定部分编写一个类,并在write XML方法中输出相应的XML。 下面的小样本片段。

 writer.WriteStartElement("awkward1"); writer.WriteAttributeString("id1", "z1"); writer.WriteValue(nodeValue); writer.WriteEndElement();