Главная » Silverlight » Обработка разных типов данных

0

До сих пор мы обсуждали извлечение из Интернета текстовых данных (статических файлов и файлов, динамически сгенерированных веб-службой). Кроме того, вы узнали, как обработать текст, содержащий разметку HTML. Однако текст и разметку HTML тяже­ло обрабатывать программно. Поэтому чаще используются более сложные структуры дан­ных, адаптированные к стандартизованным форматам, таким как XML, SOAP или JSON. Платформа Silverlight поддерживает все три указанных формата.

Формат XML

Многие простые веб-службы возвращают данные в формате XML. При использова­нии таких веб-служб нужно обработать разметку XML.

Для обработки кода XML платформа Silverlight предоставляет несколько классов.

•       XmlWriter и XmlReader. Эти классы предоставляют минимальный набор средств обработки кода XML. С их помощью можно за один раз записать или прочитать содержимое только одного элемента XML.

•       XmlSerializer. Преобразование объекта в представление XML и наоборот. Един­ственное ограничение состоит в том, что код XML вынужден иметь структуру клас­са. Для XmlSerializer нужна ссылка на сборку Sysem.Xml.Serialization.dll.

•       XDocument. Использование LINQ в XML. Как и XmlSerializer, класс позволяет преобразовать объект в код XML и наоборот, но предоставляет значительно боль­ше гибкости. Выражения LINQ позволяют фильтровать информацию и модифи­цировать структуру содержимого. Для XDocument нужна ссылка на сборку Sys­tem. Xml. Linq. dll.

Какой класс лучше применить? Классы XmlReader и XmlWriter наиболее низкоуров­невые. Следовательно, они самые мощные, но трудоемкие. Например, при чтении до­кумента XML с помощью класса XmlReader необходимо в цикле пройти по всем узлам, отслеживая структуру и пропуская пробельные символы и комментарии. Двигаться можно только в одном направлении — вперед. Если нужен только один узел, все равно необходимо пройти по всем узлам, пока не будет найден нужный. Аналогично при за­писи документа XML нужно последовательно записать все элементы, причем последо­вательность операторов определяет структуру документа. Кроме того, необходимо явно записать открывающий и закрывающий дескрипторы каждого элемента, содержащего вложенные элементы.

На практике чаще используются более высокоуровневые классы XmlSerializer и XDocument, за исключением случаев, когда необходимо обработать огромный документ XML и желательно избежать накладных расходов, связанных с полной загрузкой всего документа в память. Классы XmlReader и XmlWriter обрабатывают документ по байтам, поэтому загружать весь документ в память не нужно.

Класс XmlSerializer предпочтительнее по сравнению с XDocument, если структу­ра документа XML должна определяться структурой существующего объекта и может не соответствовать специфичному формату XML. Класс XDocument более гибкий, чем XmlSerializer. Он позволяет интерпретировать код XML как коллекцию объектов или преобразовать его в коллекцию объектов. Класс XDocument особенно полезен при работе с документами, созданными другими разработчиками, например при извлечении дан­ных из существующих веб-служб.

Примечание. Платформа Silverlight не предоставляет классы на основе объектной модели документа DOM XML (такие, как Xml Document в полнофункциональной инфраструктуре .NET). Если нужно обработать документ XML, хранящийся в памяти, рекомендуется использовать простой и эффективный класс XDocument.

В следующем разделе рассматривается использование класса XDocument для син­таксического анализа данных, возвращенных веб-службой, и для создания документа XML, передаваемого веб-службе. Классы XmlWriter, XmlReader и XmlSerializer работа­ют в Silverlight так же, как в полнофункциональной среде .NET Framework.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии