пройти xml и получить строго типизированные .NET OBjects - PullRequest
1 голос
/ 12 августа 2011

Я использую Linq To XML для сопоставления XML-документа с объектами .NET.

Может, кто-нибудь подскажет мне, есть ли еще, где я могу передать XML-документ (строку), и он сильно возвращает Type .NET OBject?

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

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Довольно просто:

  1. взять ваш XML и запустить его с помощью инструмента командной строки xsd.exe:

    c:\> xsd.exe yourfile.xml
    

    Это создаст соответствующий файл схемы XML(yourfile.xsd)

  2. Запустите инструмент xsd.exe еще раз, на этот раз для файла XSD, чтобы получить класс C #:

    c:\> xsd.exe /c yourfile.xsd
    

    Это приведет ккласс C # в yourfile.cs, который представляет ваш XML-контент

  3. Используя этот класс в проекте, просто десериализуйте ваш XML в объект C #:

    XmlSerializer ser = new XmlSerializer(typeof(YourClass));
    
    var result = ser.Deserialize(new FileStream(@"D:\temp\yourfile.xml", FileMode.Open));
    

    Есливсе работает как надо, ваш result теперь содержит экземпляр класса C #, который представляет 1: 1 содержимое XML-файла.

Вот и все!

0 голосов
/ 12 августа 2011

Просто используйте xsd util.

IIRC, вы называете это xsd /c yourschema.xsd > classes.cs.

Если у вас есть набор XML без схемы, вы также можете использовать xsd, чтобы попытаться вывести схему. Это должно быть хорошей отправной точкой в ​​любом случае:)

...