Редактирование HTML и замена определенных текстов внутри него с помощью c # - PullRequest
3 голосов
/ 28 апреля 2011

В моей программе C # WinForms я хочу создать отчет в формате HTML.Сейчас я использую StringBuilder и TextWriter, пишу все HTML-коды и сохраняю файл в формате HTML.Он работает, но я хочу улучшить рабочий процесс.

Так что моя идея состоит в том, чтобы использовать шаблон HTML с определенными текстами, которые будут заменены специальным тегом или чем-то другим (я работал с шаблоном Smarty ранее, поэтомуЯ имею в виду что-то подобное).

Представьте код HTML ниже:

        <tr>
        <td style="height: 80px; background-color:#F4FAFF">
        <span class="testPropertiesTitle">Test Properties</span>
        <br /><br />
        <span class="headerComment"><b>Test Mode:</b>&nbsp;[TestMode]</span>    
        <br /><br />    
        <span class="headerComment"><b>Referenced DUT:</b>&nbsp;[RefDUT]</span> 
        <br /><br />                        
        <span class="headerComment"><b>Voltage Failure Limit:</b>&nbsp;[VoltageLimit]</span>            
        <br /><br />
        <span class="headerComment"><b>Current Failure Limit:</b>&nbsp;[CurrentLimit]</span>
        <br /><br />
        <span class="headerComment"><b>Test Mode:</b>[TestMode]&nbsp;</span>                        
        </td>
    </tr>

Итак, в основном я хочу заменить текст между [] в приведенном выше html определенными строками, которыебыл создан в моей программе на C #.

Любые идеи, фрагменты кода, ссылки на tuturial и т. д. ... будут оценены!

Ответы [ 3 ]

3 голосов
/ 28 апреля 2011

Существует огромная опасность парсинга HTML с помощью регулярных выражений или быстрой и грязной замены. Так много вещей может пойти не так, если HTML был должным образом «подготовлен» (что трудно сделать со 100% -ной уверенностью). Упомянутый в ответе Милде пакет Agility HTML - отличный способ, но может показаться, что кувалдой взломать орех.

Однако, если вы уверены в том, что HTML-код будет проанализирован, то вы сможете быстро выполнить следующее:

     string strTextToReplace = "<tr><td style=\"height: 80px; background-color:#F4FAFF\"> <span class=\"testPropertiesTitle\">Test Properties</span><br /><br /><span class=\"headerComment\"><b>Test Mode:</b>&nbsp;[TestMode]</span><br /><br /><span class=\"headerComment\"><b>Referenced DUT:</b>&nbsp;[RefDUT]</span><br/><br/><span class=\"headerComment\"><b>Voltage Failure Limit:</b>&nbsp;[VoltageLimit]</span><br /><br /><span class=\"headerComment\"><b>Current Failure Limit:</b>&nbsp;[CurrentLimit]</span><br /><br /><span class=\"headerComment\"><b>Test Mode:</b>[TestMode]&nbsp;</span>  </td></tr>";

            Regex re = new Regex(@"\[(.*?)\]");
            MatchCollection mc = re.Matches(strTextToReplace);
            foreach (Match m in mc)
            {
                switch (m.Value)
                {
                    case "[TestMode]":
                        strTextToReplace = strTextToReplace.Replace(m.Value, "-- New Test Mode --");
                        break;
                    case "[RefDUT]":
                        strTextToReplace = strTextToReplace.Replace(m.Value, "-- New Ref DUT --");
                        break;
                    //Add additional CASE statements here
                    default:
                        break;
                }
            }
1 голос
/ 28 апреля 2011

Взгляните на HTML Agility Pack :

Это библиотека кода .NET, которая позволяет вам анализировать HTML-файлы «из Интернета». Синтаксический анализатор очень терпим с искаженным HTML «реального мира». Объектная модель очень похожа на то, что предлагает System.Xml, но для документов HTML (или потоков).

0 голосов
/ 28 апреля 2011

Взгляните на шаблон бритвы http://razorengine.codeplex.com/

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