2009-11-16 3 views
2

У меня есть этот файл XMLXML десериализации с C# .NET 3.5

<?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 ......

Благодаря

+0

Фактически, вы ** не используете ** [XmlArray] 'здесь ... см. пример в ответе. –

ответ

4

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

xsd example.xml 
xsd example.xsd /classes 

Et вуаля; один файл 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; } 
} 

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

XmlSerializer ser = new XmlSerializer(typeof(Root)); 
using (XmlReader reader = XmlReader.Create(
    new StringReader(xml))) 
{ 
    var obj = (Root)ser.Deserialize(reader); 
    // use obj 
} 
+0

очень хороший 10q :) –

2

Используйте xsd.exe tool to generate an initial set of classes, чтобы начать с. После того, как у вас есть эти настройки, при необходимости отредактируйте (разместите созданные классы) и используйте System.Xml.Serialization.XmlSerializer для десериализации обратно в объект времени выполнения.

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