2011-02-09 4 views
1

Мне нужно сериализовать строку, которая является действительной xml для объекта. Дело в том, что объект находится в 2 массивы других объектов, и я не знаю, если следующее аннотацию правильно:XmlRoot атрибут C#

[XmlRoot("Data")] 
public class Data 
{ 
    [XmlArray("ServicoUrgente")] 
    public ServicoUrgente[] servicosUrgentes; 

    [XmlArray("Mensagem")] 
    public Mensagem[] mensagens; 
} 


[XmlRoot("Mensagem")] 
public class Mensagem 
{ 
    [XmlElement("ToUserID")] 
    public int ToUserID; 

    [XmlElement("Message")] 
    public int Message; 

    [XmlElement("TimeStamp")] 
    public DateTime TimeStamp; 

} 


[XmlRoot("ServicoUrgente")] 
public class ServicoUrgente 
{ 
    [XmlElement("ServicoID")] 
    public int ServicoID; 
    [XmlElement("ToUserID")] 
    public int ToUserID; 

    [XmlElement("FromUserID")] 
    public int FromUserID; 
    [XmlElement("FromUserName")] 
    public string FromUserName; 

    [XmlElement("DataInicioPrevista")] 
    public DateTime DataInicioPrevista; 
    [XmlElement("DataFimPrevista")] 
    public DateTime DataFimPrevista; 

    [XmlElement("IDPoi")] 
    public int IDPoi; 
    [XmlElement("NomePoi")] 
    public string Nome; 
    [XmlElement("DescricaoPoi")] 
    public string Descricao; 
    [XmlElement("NContratoPoi")] 
    public string NContrato; 
    [XmlElement("MoradaPoi")] 
    public string Morada; 
    [XmlElement("LatitudePoi")] 
    public double Latitude; 
    [XmlElement("LongitudePoi")] 
    public double Longitude; 

} 

Рассматриваются вопросы: нам есть для каждого класса атрибута xmlRoot, или только данные класс имеет это, а два других имеют другой атрибут вместо xmlroot.

+0

КАК вы очищаете свой вопрос один раз? – PawanS

+0

Готово. Надеюсь, теперь это становится яснее. – Sorcerer86pt

ответ

4

XmlRoot ничего не сделает, если объект окажется в качестве корневого элемента сериализованного файла. Он не влияет на то, как объекты называются внутри массивов (насколько я знаю).

Чтобы установить имена массивов и объектов внутри использовать соответствующие атрибуты:

[XmlArray("NameOfElementWrappingTheItems")] 
[XmlArrayItem("NameOfItemsInsideTheArray")] 
public object[] Stuff ... 

Мы не можем знать, если ваш код является правильным, если вы не вывесить XML он должен перевести или чтения.

+0

Хорошо спасибо. Будет ли это делать – Sorcerer86pt

+0

Одна вещь, какой атрибут я должен использовать в классе Mensagem и ServicoUrgente вместо XmlRoot? XmlElement? – Sorcerer86pt

+0

'XmlRoot' является полностью необязательным, необходимо указать имя элемента document (root-element), если вы вызываете' Serialize (object, path) ', тогда вы можете использовать' XmlRoot' в классе своих 'object'. Для обычных свойств вы часто используете 'XmlElement' (который также является необязательным, он просто будет использовать имя свойства, если он опущен), а для перечислимых свойств вы используете' XmlArray' и 'XmlArrayItem'. –

Смежные вопросы