Встроенные элементы сериализации C # Xml - PullRequest
3 голосов
/ 30 мая 2011

Есть ли способ заставить сериализатор XML добавить элемент как встроенный, а не как макет значения. У меня просто огромный список структур, и я хотел бы добавить встроенный элемент к каждому включенному подэлементу.

<main>
<item>
  <value>1</value>
  <name>Alphabet</name>
</item>
...
</main>

Я в основном хочу добавить:

<item Enabled="true">

если блок элементов включен. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Да, просто пометьте свойство Enabled XmlAttributeAttribute:

[XmlAttribute("Enabled")]
public bool Enabled { get; set; }

Документацию по атрибутам, управляющим сериализацией xml, можно найти в MSDN: http://msdn.microsoft.com/en-us/library/83y7df3e%28v=VS.100%29.aspx

1 голос
/ 30 мая 2011

XmlAttributeAttribute

Атрибут XmlAttributeAttribute позволяет указать, что элемент должен быть сериализован как атрибут и как должен называться этот атрибут.В качестве атрибута могут использоваться только простые данные, поскольку атрибут может представлять только одно значение.Свернуть

using System;
using System.Xml.Serialization;

namespace XmlEntities {
    [XmlRoot("XmlDocRoot")]
    public class RootClass {
        private int attribute_id;

        [XmlAttribute("id")]
        public int Id {
            get { return attribute_id; }
            set { attribute_id = value; }
        }
    }
}

Это будет сериализовано во что-то похожее на это ... Свернуть

<XmlDocRoot id="1" />

дополнительная информация проверить этот ответ на SO: Как добавить атрибуты для C # XML-сериализации

...