java - 在 RTE 文本中用 <ul> 标签包裹 <li> 标签

标签 java css html tags jsoup

我有一个 RTE 文本,格式如下:

<li> text </li> 
<li> text </li> 
<p>  text </p> 
<p>  text </p>
<li> text </li>
<li> text </li>

这里的问题是,“li”标签没有包含在“ul”标签中。因为我正在编写迁移脚本,所以我想使用 Java 来实现这一点。我在 Jquery 中找到了答案,但在 Java 中很难找到这样的解决方案。

注意:不确定是否重要,但这是客户在 Excel 工作表中为迁移提供的 RTE 文本。

上面文本的期望结果如下:

<ul>
   <li> text </li> 
   <li> text </li> 
</ul>
   <p>  text </p> 
   <p>  text </p>
<ul>
   <li> text </li>
   <li> text </li>
</ul>

最佳答案

如果您只是将其作为字符串取回,这里有一个正则表达式解决方案,它应该可以工作,或者至少可以作为一个很好的起点。

String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
String replace1 = "<ul><li>";

String pattern2 = "</li>(?!\\s{0,100}<li>)";
String replace2 = "</li></ul>";

模式寻找<li>前面没有 </li> 的标签标签(忽略它们之间的任何空白)然后用一个空缺 <ul><li> 替换它们标签。

然后它会寻找任何 </li>后面没有 <li> 的标签标记并替换为 </li></ul>标签

完整代码如下,或 here是一个活生生的例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {

   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String input = "<li> text </li> <li> text </li> <p>  text </p> <p>  text </p><li> text<span>more test</span> </li><li> text </li>";
      String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
      String replace1 = "<ul><li>";

      String pattern2 = "</li>(?!\\s{0,100}<li>)";
      String replace2 = "</li></ul>";

      // Create a Pattern object
      Pattern r1 = Pattern.compile(pattern1);
      Pattern r2 = Pattern.compile(pattern2);
      // Now create matcher object.
      Matcher m1 = r1.matcher(input);

      input = m1.replaceAll(replace1);

      Matcher m2 = r2.matcher(input);
      input = m2.replaceAll(replace2);
      System.out.println(input);

   }
}

关于java - 在 RTE 文本中用 <ul> 标签包裹 <li> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680467/

相关文章:

java - Hibernate,JPA无法删除一对多关系

java - XML 的分层 Vaadin 树 (MSDL)

java - 如何在不同 Web 服务器中的两个 Web 应用程序中共享 session ?

java - SUM 函数和 GROUP BY 的列索引无效

html - 如何仅通过css设置输入的标题属性

html - 将网格菜单转换为表格 Bootstrap

html - asp.CheckBox 渲染显示在跨度内。样式属性以跨度结束,而不是复选框

html - 是什么导致了上层菜单和主菜单之间的差距?

html - float 内的 z-index 不会溢出到兄弟节点

JavaScript/jQuery - 数组列表没有遍历整个板