0

StringUtils.strip() を使用して、タグ名と属性の間のスペースを削除したいと考えています。次のJerichoメソッドでは削除できないスペースがあるため:

  • 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

ジェリコには generateHTML メソッドもありますが、すべての属性値などを提供する必要があります

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

完全順次解析では、他の言語空間を認識しません。

タグ名と属性の間の他の言語スペースのみを削除するにはどうすればよいですか? (属性値の間の他の言語スペースはOKです)それが私ができない理由ですstring.replaceALL()

4

1 に答える 1

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このコードは、 (表意文字スペース)を含むすべてのスペースを 1 つのスペースに置き換えます。スペースの前に<ELEMENT_NAME. ただし、前者は置き換えられません。(クラス パターンの「ゼロ幅の正の後読み」を参照してください) このコードでは、 の長さはELEMENT_NAME1 から 100 に制限されています。

于 2015-07-09T03:38:18.380 に答える