Я столкнулся с проблемой, связанной с тем, что в XML есть узел со строкой, представляющей HTML.
Мне нужно вырезать эту строку, но, конечно, это может привести к неправильной HTML-разметке (например, если я обрежу строку всегда после 30 символов, я могу легко потерять закрывающие элементы, такие как </ul>
и т. Д.).
Что делать?
Кажется, это очень сложно, потому что я не нахожу реальной помощи через Google.
Моя идея на данный момент: с помощью анализа-строки и регулярных выражений выберите узлы и содержимое и запишите их как XML-элемент-узлы.
Но у меня большие проблемы со всеми делами, особенно с вложенными узлами.
У кого-нибудь есть идеи?
К вашему сведению: мой блокнот:
- Regex: поймать первый тег
- Чтение тэга первого узла
- Поместите тэг в регулярное выражение и найдите весь тэг, выберите также оставшуюся часть строки (чтобы продолжить с ней позже)
- Проверить содержимое: дополнительные теги? да: -> Шаг 1, нет: -> Шаг 5
- Написать тег как нод-элемент
- Возьми остаток строки -> Шаг 1
Вот XML-документ:
<?xml version="1.0" encoding="UTF-8"?>
<html>
<data>
<![CDATA[
<h2>header</h2><p>A little article. <b>Here</b> it's already done!</p>
]]>
</data>
</html>
Что я хочу сделать:
У меня есть строка (html), и я просто хочу вывести специальное количество символов (например, первые 25). Когда я делаю это только на строке, я получаю такой результат:
"<h2>header</h2><p>A little article"
На следующем шаге я помещаю эту строку в HTML-вывод, но в этот момент я получаю недопустимую разметку, потому что <p>
-Tag не закрыт.
Итак, мой первый подход: синтаксический анализ этой строки для получения XML-узлов для каждого тега, а затем просмотр каждого узла, запись xml-элемента (чтобы убедиться, что последний тег будет действительным) и копирование как можно большего количества символов до достижения предел в этом примере будет 25 символов.