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