Создание сущности из XML - PullRequest
2 голосов
/ 09 мая 2011

У меня есть следующая структура XML

<T>
 <F>
  <H>
   <H1>some value</H1>
   <H2>some value</H2>
   <H3>some value</H3>
  </H>
  <O>
   <P>some value</P>
   <TI>some value</TI>
   <TI>some value</TI>
  </O>
  <R>
   <PTY>some value</PTY>
   <PTY>some value</PTY>
   <PTY>some value</PTY>
  </R>
 </F>
<T>  

Мне нужно проанализировать этот xml в C # и извлечь из него значения для дальнейшего экспорта в файл CSV.Мой вопрос, как вы идете о создании объекта для этого XML

Ответы [ 3 ]

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

Вы можете играть с XmlSerializer и его связанными атрибутами .

Пока XML не слишком сложен, работы не так много.

Чтобы прочитать XML:

var serializer = new XmlSerializer(typeof(SerializableObject));

SerializableObject deserialized;

using (var stream = new FileStream(@"C:\test.xml", FileMode.Open))
{ 
    deserialized = (SerializableObject)serializer.Deserialize(stream);
}

Объект SerializableObject будет выглядеть следующим образом:

[Serializable]
[XmlRootAttribute("T")]
public class SerializableObject
{
    ...
}

БОНУС для ленивых программистов : Вы можете просто использовать Xsd.exe для грубого создания объекта из файла XML. Затем настройте результаты под свои нужды.

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

Вы можете использовать LinqToXml для анализа xml. StringBuilder будет полезен для создания CSV.

Я думаю, что эти Как Тос будут полезны. Они описывают все, что вам нужно для анализа этого xml.

0 голосов
/ 09 мая 2011

добавить с помощью System.Xml.Linq; тогда вы можете сделать что-то похожее на это:

XDocument xml = XDocument.Load (@ ".... \ People.xml"); var query = из p в xml.Elements ("people"). Elements ("person") где (int) p.Element ("id") == 1 выберите p;

...