Страницы

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

воскресенье, 22 декабря 2019 г.

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

#c_sharp #net #xaml #синтаксический_анализ


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


Пишу на языке C#
Желательно чтобы инструмент работал со строкой, а не с файлом.
Цель: поиск повторяющейся разметки, сокращение ее объема и перестановка атрибутов. 

    


Ответы

Ответ 1



Если вам нужно детальное управление синтаксисом, то используйте парсеры 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 тоже, вроде, не намечается.

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

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