2009-11-09 32 views
11

Jest wystarczająco proste, aby umieścić zewnętrzny tekst węzła XML w polu tekstowym WPF. Ale czy istnieje sposób, aby pole tekstowe sformatować tekst jako dokument XML? Czy istnieje inna kontrola, która to robi?Wyświetlenie XML w polu tekstowym WPF

Odpowiedz

21

To powinno załatwić sprawę:

protected string FormatXml(string xmlString) 
    { 
     XmlDocument doc = new XmlDocument(); 

     doc.LoadXml(xmlString); 

     StringBuilder sb = new StringBuilder(); 

     System.IO.TextWriter tr = new System.IO.StringWriter(sb); 

     XmlTextWriter wr = new XmlTextWriter(tr); 

     wr.Formatting = Formatting.Indented; 

     doc.Save(wr); 

     wr.Close(); 

     return sb.ToString(); 
    } 
4

Można dołączyć do wiązania konwerter i wywołanie wewnątrz konwertera do kodu formatowania.

To jest przykład kodu, który formatuje XML:

public string FormatXml(string xml) 
{ 
    var doc = new XmlDocument(); 
    doc.LoadXml(xml); 
    var stringBuilder = new StringBuilder(); 
    var xmlWriterSettings = new XmlWriterSettings 
            {Indent = true, OmitXmlDeclaration = true}; 
    doc.Save(XmlWriter.Create(stringBuilder, xmlWriterSettings)); 
    return stringBuilder.ToString(); 
} 

a test pokazuje Zastosowanie:

public void TestFormat() 
{ 
    string xml = "<root><sub/></root>"; 
    string expectedXml = "<root>" + Environment.NewLine + 
         " <sub />" + Environment.NewLine + 
         "</root>"; 
    string formattedXml = FormatXml(xml); 

    Assert.AreEqual(expectedXml, formattedXml); 
} 
3

Czy istnieje inna kontrola, która to robi?

Tak, wystarczy wyświetlić plik XML w formancie przeglądarki.

<WebBrowser x:Name="wbOriginalXml" /> 

Wystarczy przejść do zapisanego xml

wbOriginalXml.Navigate(new Uri(@"C:\TempResult\Manifest.xml")); 

The wyniki są automatycznie drzewo-ed w przeglądarce, gdzie węzły mogą być składane:

enter image description here

+0

ten działa tylko na plikach XML, a nie na zmiennych XML w pamięci – DdW

+0

@DdW Tak, trzeba by zapisać do pliku tymczasowego, jeśli XML jest w pamięci. – OmegaMan

Powiązane problemy