删除html

时间:2015-07-09 01:38:30

标签: java html html-parsing jericho-html-parser

我想使用StringUtils.strip()修剪标记名称和属性之间的空格。因为我有一些空间无法被删除 遵循耶利哥的方法:

  • CharacterReference.decodeCollapseWhiteSpace(htmlFragment))
  • TextExtractor -Tag [] allTags = source.fullSequentialParse();

第一种方法删除普通空格而不删除其他语言空间。 这是我得到的错误。例如

html = "<a   href=\"test.html\"><font></font></a>";

StartTag a at (r1,c1,p0) rejected because the name contains an invalid character at position (r1,c3,p2)
Encountered possible StartTag at (r1,c1,p0) whose content does not match a registered StartTagType

在jericho中还有一个generateHTML方法,但我们必须提供所有属性值等

public static java.lang.String generateHTML(java.util.Map<java.lang.String,java.lang.String> attributesMap)

在完整顺序解析中,它无法识别其他语言空间。

如何仅在标记名称和属性之间删除其他语言空间? (属性值之间的其他语言空间可以)这就是我无法做string.replaceALL()

的原因

1 个答案:

答案 0 :(得分:0)

您可以使用String.replaceAll()。

    String html = "<a   href=\"test.html\">   <font></font></a>";
    System.out.println(html.replaceAll("(?<=<\\w{1,100})[\\s\\u3000]+", " "));
    // -> <a href="test.html">   <font></font></a>

此代码将所有空格(包括\u3000(表意空间)替换为一个空格。空格必须以<ELEMENT_NAME开头。但前面的内容并没有被取代。 (参见&#34;零宽度正面观察&#34;在Class Pattern中)ELEMENT_NAME的长度在此代码中限制在1到100之间。