Преобразование файлов журнала в XML и (X) HTML, рекомендации - PullRequest
2 голосов
/ 16 июля 2009

Мне было поручено преобразовать некоторые текстовые файлы журнала из инструмента тестирования отчетов, который я унаследовал. Инструмент представляет собой скомпилированное приложение C # (.NET 3.5).

Я хочу проанализировать и преобразовать группу логически связанных файлов журнала в один файл отчета XML, что не является проблемой. Классы System.Xml достаточно просты в использовании.

Однако я также хочу создать более «читаемый» файл для каждого отчета. Я выбрал HTML, и потому что мне нравится стандартизация, я бы предпочел сделать это в надлежащем XHTML.

У меня вопрос: как мне создавать файлы HTML вместе с отчетами XML? Сначала я хотел создать файл XML, а затем использовать LINQ и простой StreamWriter для создания файла HTML в моем коде на C #. Я мог бы также использовать XSLT в отличие от LINQ, чтобы упростить код на C #. Но так как мне все равно приходится это компилировать, мне не нравится идея добавления большего количества файлов для установки / распространения.

Может ли использование LINQ вызвать у меня какие-либо проблемы, в отличие от XSLT? Есть ли хорошие библиотеки для написания HTML для .NET, которые соответствуют XHTML? Поскольку у меня все проанализировано из файлов журнала в рабочей памяти, есть ли простой способ легко создать оба файла одновременно?

Ответы [ 3 ]

4 голосов
/ 16 июля 2009

Я бы действительно рекомендовал использовать XSL-преобразование. Поскольку у вас уже есть документ XML. Если вы напишите хорошее XSL-преобразование, вы получите очень хорошие результаты.

http://www.w3schools.com/xsl/xsl_transformation.asp

небольшой фрагмент:

    XslCompiledTransform xsl = new XslCompiledTransform();


    xsl.Load(HttpContext.Current.Server.MapPath(xslPath));

    StringBuilder sb = new StringBuilder();
    using (TextWriter tw = new StringWriter(sb))
    {
        // Where the magic happens
        xsl.Transform(xmlDoc, null, tw);


        //return of text which you could save to file...
        return sb.ToString();
    }
4 голосов
/ 16 июля 2009

Я бы создал xslt-преобразование и просто запустил его для XML. Linq действительно не предназначен для преобразования XML одной схемы (например, вашего отчета) в другую (например, xhtml). Вы можете сделать это грубо, но xslt - элегантный способ сделать это.

2 голосов
/ 16 июля 2009

Одна из приятных особенностей использования XSLT заключается в том, что вы можете поместить инструкцию обработки в верхнюю часть XML, которая сообщает браузеру пользователя, как создать сам отчет:

   <?xml-stylesheet type="text/xsl" href="Your_XSLT.xslt"?>

Таким образом, вам не нужно выполнять отдельный шаг для создания отчета. Пользователь просто открывает файл XML прямо в браузере, но вместо этого он видит сгенерированный отчет.

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