Скрипт для преобразования разметки html в действительный XML - PullRequest
3 голосов
/ 18 февраля 2011

У меня есть редактор WYSIWYG, который создает HTML-контент. Теги не всегда создаются как действительный xml, и мне нужно, чтобы он был действительным xml. У кого-нибудь есть такой скрипт? Как бы я это сделал?

Ответы [ 4 ]

4 голосов
/ 18 февраля 2011

Я не уверен, какой язык вы используете на сервере, но вы можете посмотреть Html Agility Pack , если вы используете .NET

2 голосов
/ 15 марта 2011

Возможно, стоит взглянуть на эту .NET версию HTML Tidy: Tidy.NET

1 голос
/ 17 марта 2011

Microsoft выпустила пример кода: SgmlReader . Это позволяет читать (среди других форматов) Tidy HTML.

Я написал небольшой вспомогательный метод, который преобразует строку HTML в строку XML:

/// <summary>
/// Converts a string from potential dirty HTML to valid XML
/// </summary>
/// <param name="input">The string to convert</param>
/// <returns>A valid XML fragment that contains the cleaned HTML</returns>
/// <remarks>This methods only format the html to an xml compatible parser.
/// The method does not clean dangerous tags from the source string</remarks>
public static string HtmlToXHtml(string input)
{
    using (var sr = new StringReader(input))
    {
        var hr = new SgmlReader(sr);
                    hr.InputStream = sr;
                    hr.DocType = "HTML";
        var output = new StringBuilder();
        var hw = new XmlTextWriter(new StringWriter(output));

        hr.Read();
        while (!hr.EOF)
        {
            hw.WriteNode(hr, true);
        }


        return output.ToString();
    }
}

Вы можете «просто» обновить ввод пользователя после обратной передачи. В более сложных сценариях (при необходимости переключения между режимами wysiwyg и Html source) вам может потребоваться немного Ajax для преобразования строки html в xhtml за кулисами перед отображением источника html в текстовой области.

1 голос
/ 18 февраля 2011

Существует ряд инструментов, таких как TagSoup Джона Коуэна, которые хорошо справляются с задачей преобразования HTML в XML.

...