Десериализация XML с помощью C # .NET 3.5 - PullRequest
2 голосов
/ 16 ноября 2009

У меня есть этот XML-файл

<?xml version="1.0" standalone="yes"?>
<Root>
    <Object>
        <referenceName>People</referenceName>
        <query>select * from people</query>
    </Object>
    <Object>
        <referenceName>Countries</referenceName>
        <query>select * from countries</query>
    </Object>
</Root>

Мне нужно преобразовать в объект с C #.

Я запутался, как это сделать. Пожалуйста, обратите внимание, что я могу иметь много объектов в файле XML.

Я знаю, что мне нужно использовать [XMLArray ......

Спасибо

Ответы [ 2 ]

4 голосов
/ 16 ноября 2009

Самый простой трюк в командной строке VS:

xsd example.xml
xsd example.xsd /classes

Et voila; один файл example.cs с примером C #, который показывает, как получить этот XML из объектов .NET через XmlSerializer.

В этом случае, я ожидаю , будет работать следующее:

public class Root
{
    [XmlElement("Object")]
    public List<SomeOtherObject> Objects { get; set; }
}

public class SomeOtherObject
{
    [XmlElement("referenceName")]
    public string Name { get; set; }
    [XmlElement("query")]
    public string Query { get; set; }
}

обновление: проверено; да, это работает ...

XmlSerializer ser = new XmlSerializer(typeof(Root));
using (XmlReader reader = XmlReader.Create(
    new StringReader(xml)))
{
    var obj = (Root)ser.Deserialize(reader);
    // use obj
}
2 голосов
/ 16 ноября 2009

Используйте инструмент xsd.exe для создания начального набора классов для начала. Как только вы это сделаете, настройте при необходимости (опубликуйте сгенерированные классы) и используйте <a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx" rel="nofollow noreferrer">System.Xml.Serialization.XmlSerializer</a> для десериализации обратно в объект времени выполнения.

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