如何在运行时将Xml属性添加到属性

时间:2019-08-28 15:23:22

标签: c# xml

我需要将一个类序列化为xml。如果在运行时满足特定条件,我想向元素添加XML属性并为其分配值。有时,“错误”属性会出现,有时却不会。

我的序列化对象的代码:

public class XmlToolsRepo : IXmlTools
{
    public string SerializeToXML<T>(object obj)
    {
        string results = null;

        Encoding enc = Encoding.UTF8;
        using (MemoryStream ms = new MemoryStream())
        {
            using (XmlTextWriter xw = new XmlTextWriter(ms, enc))
            {
                xw.Formatting = Formatting.None;
                XmlSerializerNamespaces emptyNS = new XmlSerializerNamespaces(new[] { new XmlQualifiedName("", "") });
                XmlSerializer xSerializer = new XmlSerializer(typeof(T));
                xSerializer.Serialize(xw, obj, emptyNS);
            }

            results = enc.GetString(ms.ToArray());
        }

        return results;
    }
}

一个类的属性在运行时可能具有新属性:

[DataContract]
public class H204
{
    [DataMember]
    [XmlAttribute]
    public string Code { get; set; }

    [DataMember]
    public string DW { get; set; }
}

满足条件后,我需要XML如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<H204 Code="A">
    <DW Error="test" />
</H204>

1 个答案:

答案 0 :(得分:1)

尝试以下操作:

    public class H204
    {
        [XmlAttribute(AttributeName = "Code")]
        public string Code { get; set; }

        [XmlElement(ElementName = "DW")]
        public  DW  dw{ get; set; }
    }
    public class DW
    {
        [XmlAttribute(AttributeName = "Error")]
        public string text { get; set; }
    }
相关问题