XSL в Windows Phone - PullRequest
       1

XSL в Windows Phone

1 голос
/ 30 октября 2011

Мне нужно сделать XSL-преобразование моего xml-файла на платформе Windows Phone 7. Проблема в том, что Microsoft исключила пространство имен System.Xml.Xsl из WP7 SDK. Таким образом, нет класса XslTransform. Может ли кто-нибудь предложить какой-либо способ обойти это?

UPDATE: У меня есть статьи в формате xml, которые мне нужно представить пользователю в удобочитаемой форме. Использование веб-сервиса, который делает эту работу для меня, невозможно, потому что приложение должно быть полностью интернет-независимым. Элемент управления WebBrowser работал хорошо, но последнее обновление Mango нарушило этот подход .

Ответы [ 3 ]

3 голосов
/ 30 октября 2011

Поскольку Microsoft исключила класс XslTransform из WP7, вам потребуется другая реализация.

Поскольку XslTransform всегда был доступен для других платформ в .NET, может быть нелегко найти реализацию с открытым исходным кодом в C #, которую вы могли бы использовать.Возможно, вы могли бы взглянуть на адаптацию процессора Xsl из другой среды, такой как Java.К сожалению, это может быть значительный объем работы.

Если вы не можете найти ничего, что можно легко использовать для WP7, возможно, вам следует спросить себя, действительно ли вам это нужно?Можете ли вы изменить свою архитектуру, чтобы обойти это?

В крайнем случае, вы можете создать веб-сервис, который сделает Xsl-преобразование за вас.Очевидным недостатком этого является то, что телефон должен быть подключен к Интернету, чтобы использовать его - и услуга должна быть включена.Другими словами, это значительно усложняет решение (если вы уже не извлекаете данные с сервера, и в этом случае я просто выполняю преобразование на стороне сервера перед возвратом данных).

1 голос
/ 31 октября 2011

@ Пашек, чтобы предложить альтернативы, было бы полезно, если бы вы могли объяснить природу преобразования, которое вы хотите осуществить. В конце концов, XSLT - это такой язык преобразования общего назначения, что вы можете делать с ним что угодно. Два распространенных сценария преобразования: (1) копировать входной XML-документ в основном без изменений, за исключением добавления / изменения / удаления нескольких выбранных элементов или атрибутов; и (2) преобразовать фундаментальную структуру входного XML-документа, такую ​​как группировка элементов, отображение между двумя разнородными иерархиями и т. д. Можете ли вы дать нам представление о диапазоне преобразований, которые вы пытаетесь выполнить?

В дополнение к пониманию вашей цели, чтобы мы могли предложить программные подходы, есть два пути, которые, похоже, заслуживают небольшого изучения. Во-первых, имеет ли смысл в вашем сценарии отправлять XML в размещенный сервис для преобразования? Если вы уже пользуетесь услугами для других целей, это может быть разумным; если нет, то это может быть немного.

Во-вторых, в .NET Framework XSLT компилируется в сборку в памяти. Утилита xsltc.exe может использоваться для компиляции XSLT-преобразований в обычную (то есть файловую) сборку .NET. Читайте о xsltc здесь и в других местах. Я не пытался адаптировать сгенерированную xsltc сборку для использования в приложении Windows Phone, но это может быть жизнеспособным методом.

0 голосов
/ 06 ноября 2011

@ Пашек ответил в комментариях вопроса, что преобразование, которое он хочет создать, существенно не реструктурирует документ, тогда другим жизнеспособным решением будет использование пары XmlReader и XmlWiter, считывание элементов и атрибутов из читателя и запись соответствующейтребуемые элементы и атрибуты с помощью средства записи.

Первый пример в Как выполнить: синтаксический анализ XML с помощью XmlReader точно иллюстрирует этот подход.

Этот подход имеет явное преимущество перед XSLT, поскольку это не создает XML DOM для исходного или целевого документа.XML DOM обычно порядка 10-кратного размера сериализованного (в форме угловых скобок) XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...