Как изменить родительские теги XML - PullRequest
2 голосов
/ 21 марта 2012

Скажем, у меня есть 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>

Там, где еще много <InternetProxy> в файле XML, но я удалил их для ясности.

<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; }
}

Edit:

Вот что я пытался, почему это не работает для меня ??

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

1 Ответ

2 голосов
/ 21 марта 2012

У вас должно быть что-то вроде:

[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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...