XmlSerializer для XML с гибридными элементамиC#

Место общения программистов C#
Ответить
Anonymous
 XmlSerializer для XML с гибридными элементами

Сообщение Anonymous »

Я пытаюсь использовать XmlSerializer для сериализации/десериализации SyncML. У меня возникли трудности с шаблоном, который встречается в теге , как показано ниже:

Код: Выделить всё


1.2
DM/1.2




100
1
0



103
1
4



104












105












107

108












109







110










Мои занятия на данный момент следующие:

Код: Выделить всё

[XmlRoot("SyncML", Namespace = "SYNCML:SYNCML1.2")]
public class SyncML
{
[XmlElement]
public SyncHdr SyncHdr { get; set; }

[XmlArray("SyncBody")]
[XmlArrayItem("Status", Type = typeof(StatusCommand))]
[XmlArrayItem("Get", Type = typeof(GetCommand))]
public SyncBody SyncBody { get; set; }
}

public class SyncHdr
{
[XmlElement("VerDTD")]
public string VerDtd { get; set; }

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

// etc.
}

public class SyncBody : List
{
}

public abstract class SyncCommand : List
{
[XmlElement("CmdID")]
public int CmdId { get; set; }
}

public class StatusCommand : SyncCommand
{
[XmlElement("MsgRef")]
public int MsgRef { get; set; }

[XmlElement("CmdRef")]
public int CmdRef { get; set; }

// etc.
}

public class GetCommand : SyncCommand
{
public List Items { get; set; }
}

public class Item
{
[XmlElement("Target")]
public Location Target { get; set; }
}

public class Location
{
[XmlElement("LocURI")]
public string LocUri { get; set; }
}
Проблема в том, что в XML тег Get содержит один элемент свойства (CmdID) (как и элемент Status, а также любое количество элементов Item). Есть ли способ присвоить классу GetCommand такую ​​возможность? Нужно ли мне компоновать модели по-другому?

Подробнее здесь: https://stackoverflow.com/questions/767 ... d-elements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»