C# 中的 XML 序列化,数组的内容占位符

本文关键字:占位符 数组 中的 XML 序列化 | 更新日期: 2023-09-27 18:32:08

我正在尝试通过序列化对象来创建 xml 文档。我遇到了一个问题。

目标 xml 结构类似于 HTML 页面。它有一个带有一些属性的表单元素并且可以有任意数量的控件,如文本字段、按钮等。 下面给出了我为此结构创建的对象。为了添加所有这些控件,我正在使用一个名为 items 的数组列表。当对象被分类时,所有控件都出现在标签内。我希望控件显示为表单元素的直接子级。我该怎么做?

   [XmlInclude(typeof(Lstatic))]
    [XmlInclude(typeof(textField))]
    public class form
    {
        [XmlAttribute]
        public String action
        {
            get;
            set;
        }
        [XmlAttribute]
        public String method
        {
            get;
            set;
        }
        [XmlAttribute]
        public String name
        {
            get;
            set;
        }
        [XmlArray]
        public ArrayList items
        {
            get;
            set;
        }
    }

这是生成的 XML

<form name="login" method="get" action="/FetchIndex.asmx/findAddresses"> 
<items> 
<anyType value="Please key in your details:" xsi:type="Lstatic"/> 
<anyType name="postCode" value="" xsi:type="textField" size="10" label="Postcode:" hint="Enter your postcode"/> 
</items> 
</form>

相反,我想要这样的结果 xml

<form name="login" method="get" action="/FetchIndex.asmx/findAddresses"> 
    <anyType value="Please key in your details:" xsi:type="Lstatic"/> 
    <anyType name="postCode" value="" xsi:type="textField" size="10" label="Postcode:" hint="Enter your postcode"/> 
    </form>

如何在 c# 中执行此操作?谢谢

C# 中的 XML 序列化,数组的内容占位符

这段代码未经测试,对不起,这只是我记得的。我相信你需要XmlElement属性。

[XmlElement("AnyType")]
public object[] itemsSerializable
{
    get { return items.ToArray(); }
    set { items = new ArrayList(value); }
}
[XmlIgnore]
public ArrayList items
{
    get;
    set;
}

如果它有效,则有可能在不需要itemsSerializable属性的情况下也可以工作,您应该检查一下。