Использование XmlSerializer для создания элемента с атрибутами и значением, но без вложенного элемента - PullRequest
23 голосов
/ 19 августа 2010

Надеюсь, это будет простой ответ для кого-то там (и, возможно, обман), но я не могу понять это.

Мне нужно вывести элемент, который выглядит следующим образом:

<Quantity foo="AB" bar="CD">37</Quantity>

Я знаю, как это получить:

  <Quantity foo="AB" bar="CD">
    <qty>37</qty>
  </Quantity>

с классом «Количество», содержащим

public int qty;    
[XmlAttribute]
public string foo;

[XmlAttribute]
public string bar;

, но, конечно, любая переменная, в которую я добавляю количество, становитсясвой собственный подэлемент.

С другой стороны, если я сделаю количество переменной в родительском элементе, тогда я могу установить значение и получить

<Quantity>37</Quantity>

, но тогда я не знаю, как получитьатрибуты.

Я был бы очень удивлен, если бы не было простого способа сделать это с XmlSerializer, но я пока не знаю этого.Есть идеи?

1 Ответ

52 голосов
/ 19 августа 2010

Я нахожу ответ здесь: Xmlserializer - Сопряжение элемента и атрибута (исправлено) .

Вот как это сделать: пометить свойство value атрибутом [XmlText].

public class Quantity {
  // your attributes
  [XmlAttribute]
  public string foo;

  [XmlAttribute]
  public string bar;

  // and the element value (without a child element)
  [XmlText]
  public int qty;

}
...