Отображать XML в текстовом поле WPF - PullRequest
11 голосов
/ 09 ноября 2009

Достаточно просто поместить внешний текст узла XML в текстовое поле WPF. Но есть ли способ получить текстовое поле для форматирования текста в виде документа XML? Есть ли другой элемент управления, который делает это?

Ответы [ 3 ]

24 голосов
/ 09 ноября 2009

Это должно сработать:

    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();
    }
5 голосов
/ 09 ноября 2009

Вы можете прикрепить к привязке конвертер и вызвать внутри конвертера код форматирования.

Это пример кода, который форматирует 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();
}

И тест демонстрирует использование:

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 голосов
/ 19 мая 2016

Есть другой элемент управления, который делает это?

Да, просто отобразите xml в элементе управления браузера.

<WebBrowser x:Name="wbOriginalXml" />

Просто перейдите к сохраненному XML

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

Результаты автоматически древовидные в браузере, где можно свернуть узлы:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...