Разделить строку по тегам XML в Java

1

Я хочу написать метод в Java, который разбивает теги String по XML следующим образом:

"Lorem ipsum <b>dolor</b> sit amet consetetur <b>diam</b> nonumy."

Должен возвращать массив:

["Lorem ipsum ", "<b>dolor</b>", " sit amet consetetur ", "<b>diam</b>", " nonumy."]

Это должно работать для каждого XML-тега, а также для закрывающих тегов, таких как <element/>.

Есть ли библиотека, которая делает что-то подобное простым способом?

Благодарю!

Теги:
xml-parsing

1 ответ

0
Лучший ответ

Использование lookaround в вашем расколе должно сделать трюк:

String splits[] = input.split("\\s+(?=<b>)|(?<=</b>)\\s+");

Пример:

String input = "Lorem ipsum <b>dolor</b> sit amet consetetur <b>diam</b> nonumy.";
for(String s : input.split("\\s+(?=<b>)|(?<=</b>)\\s+")){
    System.out.println(s);
}

Если вы хотите сохранить пространство в целочисленном массиве, удалите \\s+ из регулярного выражения.

  • 0
    Большой! В качестве дополнительного вопроса: знаете ли вы общее регулярное выражение для каждого тега XML, который я могу использовать? Я не могу знать, какие теги придут. Регулярное выражение также должно соответствовать самозакрывающимся тегам, таким как <element/> и с атрибутами.
  • 0
    Теги переменных не будут работать, так как lookbehind ( <=... ) поддерживает только фиксированную длину.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню