繁体   English   中英

C#如何xml序列化复杂类型作为xml属性?

[英]C# How to xml serialize complex type as a xml attribute?

我想使用XmlSerializer序列化一个类,典型的东西。 我唯一的不同是我想将自定义对象“ ComplexType”序列化为属性,而不是子元素。

我看过其他堆栈溢出问题,答案说这是不可能的。 我知道那是错的。

错误是这样的:

“ XmlAttribute / XmlText不能用于编码复杂类型。”

- 要么 -

“ XmlAttribute / XmlText不能用于编码实现IXmlSerializable的类型。”

只需将myfield从ComplexType更改为DateTime,它就可以正常工作。 DateTime肯定很复杂,因此我只需要知道要在类或属性中进行哪些更改即可。

例如:是

<Container myComplexType="specialencoding" />

例如:否

<Container>
   <myComplexType>specialencoding</myComplexType>
</Container>

-看看第一个更好...我想要那个。

-代码就是这样...

[XmlRoot(ElementName="Container")]
public class Container
{
  [XmlAttribute(AttributeName="myComplexType")]
  public ComplexType myfield = new ComplexType();
}


public class ComplexType
{
    public ComplexType(){}
    public ComplexType(string encoding){}
    public override string ToString() {return "specialencoding";}
}

如果实现ComplexType:IXmlSerializable,则会收到上面的第二条错误消息。

使用的基本序列化器:

XmlSerializer serializer = new XmlSerializer(typeof(Container));
serializer.serialize("outfile.xml", new Container());

尝试这个 :

        private ComplexType _myfield = new ComplexType();

        [XmlAttribute(AttributeName = "myComplexType")]
        public string myfield {
            get { return _myfield.ToString();}
        }
    }
    public class ComplexType
    {
        public ComplexType(){}
        public ComplexType(string encoding){}
        public override string ToString() {return "specialencoding";}
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM