Каков наилучший способ чтения и записи документов cXML в C #? - PullRequest
5 голосов
/ 21 мая 2010

Я знаю, что это неопределенный открытый вопрос. Я надеюсь получить общее руководство.

Мне нужно добавить пункт cXML на сайт / приложение ASP.NET C #. Это заменяет то, что я написал несколько лет назад в ColdFusion.

Я достаточно опытный разработчик C #, но я мало что сделал с XML. Кажется, есть много разных вариантов обработки XML в .NET.

Вот открытый вопрос: Предполагая, что у меня есть XML-документ в некоторой форме, например, файл или строка, каков наилучший способ вставить его в мой код? Я хочу получить данные, а затем запросить базы данных и т. Д. Размер документа cXML и объемы нашего трафика достаточно малы, так что загрузка документа cXML в память не является проблемой.

Должен ли я:

1) Вручную создавать классы на основе dtd и использовать XML Serializer?

2) Используйте инструмент для генерации классов. Есть примеры файлов cXML, которые можно загрузить с Ariba.com. Я попытался xsd.exe для генерации xsd, а затем xsd.exe / c для генерации классов. Когда я пытаюсь десериализовать, я получаю ошибки, потому что, кажется, существует «путаница» в отношении того, должны ли некоторые элементы иметь отдельные значения или массивы.

Я попробовал онлайн-инструмент CodeXS, но он выдает ошибки в журнале и ошибки, если я пытаюсь десериализовать образец документа.

2) Создать набор данных и ReadXml ()?

3) Создать типизированный набор данных и ReadXml ()?

4) Используйте Linq to XML. Я часто использую Linq для Objects, поэтому я знаком с Linq в целом, но я изо всех сил пытаюсь понять, что это дает мне в этой ситуации.

5) Некоторые другие средства.

Я думаю, мне нужно улучшить мое понимание XML в целом, но даже в этом случае ... я упускаю какой-то очевидный способ сделать это? На старом сайте ColdFusion я обнаружил бесплатный компонент («тег»), который в основном игнорировал любую схему и считывал XML в «структуру», которая по сути представляет собой серию вложенных хеш-таблиц, которые затем легко читались в коде. Это было, вероятно, довольно небрежно, но это сработало.

Мне также нужно генерировать файлы XML из моих объектов C #. Возможно, Linq to XML подойдет для этого. Я мог бы начать со стандартного «шаблона» документа и манипулировать им перед сохранением.

Спасибо за любые указатели ...

1 Ответ

1 голос
/ 21 мая 2010

Если вам нужно сгенерировать произвольный XML в точном формате, вы должны сгенерировать его вручную, используя LINQ-to-XML.

...