如何更改XML父标记

时间:2012-03-21 16:24:42

标签: c# xml winforms

假设我有一个像这样的xml文件:

<ArrayOfInternetProxy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <InternetProxy>
    <ProxyName />
    <ProxyIP>23.19.34.127:8800</ProxyIP>
    <Username />
    <Password />
  </InternetProxy>
</ArrayOfInternetProxy>

xml文件中还有更多<InternetProxy>,但为了清楚起见,我删除了它们。

<InternetProxy>表示程序中的对象,而<ArrayOfInternetProxy>表示所述对象的数组。

如何将标记<ArrayOfInternetProxy><InternetProxy>更改为我喜欢的内容?

我设法通过使用:

来更改属性
    [XmlElement("ProxyName")]
    public string ProxyName { get; set; }

但这不适用于其他标签。

感谢。

我的课程:

public class InternetProxy //I want to change this in the xml output
{
    [XmlElement("ProxyName")]
    public string ProxyName { get; set; }

    [XmlElement("ProxyIP")]
    public string Address { get; set; }

    [XmlElement("Username")]
    public string UserName { get; set; }

    [XmlElement("Password")]
    public string Password { get; set; }
}

编辑:

这是我尝试过的,为什么这对我不起作用?

[XmlElement("Proxies")]
[XmlArray("Proxies")]
List<InternetProxy> proxies;

1 个答案:

答案 0 :(得分:2)

你应该有类似的东西:

[XmlArray("Proxies")]
public InternetProxy[] InternetProxy
{
   get;
   set;
}

要控制序列化的方式,您可以应用以下属性:

  • XmlArrayAttribute:它会更改数组的名称(您的实际ArrayOfInternetProxy)。
  • XmlArrayItemAttribute:它会更改数组项的名称(您的实际InternetProxy)。

如果你直接序列化你的数组(所以你没有这个数组的属性),你应该应用XmlType属性,如:

[XmlType(TypeName="Proxies")]
public class InternetProxy
{
}

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.10).aspx