【问题标题】:Wrap <li> tags with <ul> tag in RTE text在 RTE 文本中用 <ul> 标签包裹 <li> 标签
【发布时间】:2017-12-06 17:48:25
【问题描述】:

我有一个格式如下的 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>

【问题讨论】:

  • 这里没有足够的上下文让我们回答。您是在 DOM 中还是在纯文本流中处理它?请解释输入和输出机制。
  • 纯文本流。我将 jcr 属性分配给 RTE 组件,以便该组件将呈现并转换此纯文本。但需要在 java 中解析这个纯文本以添加
      标签。

标签: java css html tags jsoup


【解决方案1】:

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

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

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

该模式查找前面没有&lt;/li&gt; 标记的&lt;li&gt; 标记(忽略它们之间的任何空格),然后用一个开头的&lt;ul&gt;&lt;li&gt; 标记替换它们。

然后它会查找任何 &lt;/li&gt; 标签后面没有 &lt;li&gt; 标签并替换为 &lt;/li&gt;&lt;/ul&gt; 标签

下面的完整代码,或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);

   }
}

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2014-07-25
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多