If you’d like to render XML as a WPF FlowDocument, give this a try (ClickOnce sample; source available here or on CodePlex). Here’s a screenshot:
The useful part is the PrettyXmlConverter class (view here; it’s “self documenting”
). It’s implemented as an IValueConverter so you can easily include it in binding expressions:
<Window x:Class="XmlFlowDocumentSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converters="clr-namespace:CJC.Wpf.Converters" Title="Pretty XML FlowDocument sample"> <Window.Resources> <converters:PrettyXmlConverter x:Key="prettyXmlConverter"/> <XmlDataProvider x:Key="xmlSource" Source="Xml/Books.xml" IsAsynchronous="False"/> </Window.Resources> <Grid> <FlowDocumentReader ViewingMode="Scroll" Zoom="300" Document="{Binding Source={StaticResource xmlSource}, Path=Document, BindsDirectlyToSource=true, Converter={StaticResource prettyXmlConverter}}"> </FlowDocumentReader> </Grid> </Window>
Currently it only renders elements and attributes, so no comments, processing instructions or explicit CDATA handling. These could be added very easily if needed
The formatted XML pastes nicely into MS Word (formatting preserved).

4 responses so far ↓
Silverlight Travel // November 2, 2008 at 3:54 am |
Thanks for your nice “PrettyXmlConverter” class. It is a great help.
Peter Loebel
Bradley Grainger // November 12, 2008 at 10:42 am |
Thanks for providing this great class; it does its job well and is really easy to plug into an existing project.
Chris Cavanagh // November 12, 2008 at 10:47 am |
Peter & Bradley – Thanks! Let me know if you make any improvements / enhancements
tim // November 26, 2008 at 2:24 pm |
Perfect. Thank you!