Страницы

Поиск по вопросам

пятница, 16 ноября 2018 г.

Что лучше использовать для парсинга XAML?

Недавно прочел, что для парсинга html не рекомендуют использовать регулярные выражения, так как есть специальная библиотека. Ну и вот вопрос: есть ли что-то лучше регулярных выражений для парсинга XAML? Дополнительная информация:
Пишу на языке C# Желательно чтобы инструмент работал со строкой, а не с файлом. Цель: поиск повторяющейся разметки, сокращение ее объема и перестановка атрибутов.


Ответ

Если вам нужно детальное управление синтаксисом, то используйте парсеры XML: новый System.Xml.Linq.XDocument, старый System.Xml.XmlDocument
XAML — надмножество XML вместе со всеми пронстранствами и имён и прочим, поэтому любой парсер XML справится с XAML. Учтите, что в этом случае вы получите markup extension в виде простой строчки, а маппингом типов придётся заниматься вручную, если он вам понадобится. Если вам нужно глубокое понимание структуры (вместе с markup extension, маппингом на реальные типы и прочими надстройками XAML над базовым XML), то используйте парсер XAML: System.Xaml.XamlServices
Вы потеряете контроль над синтаксисом (если вы сериализуете не исключительно ваши классы), но у вас будет полностью распарсенное в объекты дерево, которое можно модифицировать и впоследствии сериализовать.
Если вам нужна кросс-платформенность, то учтите, что парсер XAML в Mono не поддерживает все возможности (читать: ущербен до невозможности и абсолютно бесполезен), а на разных виндовых платформах свои отдельные парсеры диалектов XAML (читать: парсить можно только XAML родом из родной платформы). При этом в CoreCLR парсер XAML тоже, вроде, не намечается.

Комментариев нет:

Отправить комментарий