2009-07-06 5 views
2

htmlparser(htmlparser.org)を使用して、すべてのリンクを入力文字列に書き換えます。Java HTMLParser(org.htmlparser)を使用してリンクのURLを置き換える方法

入力文字列に表示されるすべてのリンクタグ(<a href=...)を反復して値を取得し、それらを操作する方法を決定する正規表現を実行し、リンクのhref、targetを更新するだけですそれに応じて値をオンクリックします。

入力文字列内の選択リンク要素のみをどのように更新すればよいのか分かりません。入力文字列内の他のすべてのデータは変更されません。

htmlparserライブラリは操作のために特定の要素を抽出することができますが、元のコンテキストの要素を操作することはできず、更新された値を返して元のコンテキストの整合性を維持します。

ご協力いただければ幸いです。

おかげ

答えて

2

これは非常に単純な例ですが、どのようにセットアップノードイテレータをする方法を示します。

public static String setExternalLinkTargets(String html) { 
    final NodeVisitor linkVisitor = new NodeVisitor() { 

     @Override 
     public void visitTag(Tag tag) { 
      // Process any tag/node in your HTML 
      String name = tag.getTagName(); 

      // Set the Link's target to _blank if the href is external 
      if ("a".equalsIgnoreCase(name)) { 
       if(isExternalLink(url.getHost()) { 
        tag.setAttribute("target", "_blank"); 
       } 
      } 
     } 
    }; 

    Parser parser = Parser.createParser(html, null); 
    NodeList list; 
    try { 
     list = parser.parse(null); 
     list.visitAllNodesWith(linkVisitor); 
     return list.toHtml(); 
    } catch (ParserException e) { 
     // Could not parse HTML, return original HTML 
     return html; 
    } 
} 
関連する問題