2009-04-02 24 views
2

サードパーティ製のHTMLエディタを使って問題を解決しようとしたが、私は単純な操作だった。これらの問題のため、私は操作を実行するために使用できる代替HTMLパーサーの推奨を探しています。Java HTMLパーサ/エディタの推奨事項

私の状況では、自分のhtmlにIDタグ属性を持つスパンタグがあり、クライアントの別の領域のアップデートに基づいて内容を置き換えたいだけです。たとえば:

Element e; 
e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "1"); 
document.setInnerHTML(element, "John"); 
e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "2"); 
document.setInnerHTML(element, "99"); 

が、返された要素が葉の要素であり、innerHTMLプロパティを設定することができません。

<html> 
    <body> 
     <p>Hello <span id="1">name</span> you are <span id="2">age</span></p> 
    </body> 
</html> 

私はこのようなjavax.swing.textHTMLDocumentクラスを使用しようとしてきました。残念ながら、文書&パーサーはすべて第三者の&によって提供されているため、実際には変更できません。

私が望んでいたことは、他の誰かが同様の問題を抱えており、これを行うための代替ライブラリをお勧めできるかどうかということでした。事前に

おかげで、

答えて

2

あなたは本当にjava.swing.text.HTMLDocumentでそれを達成できませんか?

私はこれを試していないが、APIを介して代わりにsetInnerHtmlを(使用しての

document.replace(e.getStartOffset(), e.getEndOffset()-e.getStartOffset(), "John", null) 

のラインに沿って何かを読んだことがないが)仕事ができます。

+0

ええ、これは以前に試してみましたが、うまくいきませんでした...これは、私のスパンには別の属性が付いていたからです(idの中でもid) - nullの代わりにe.getAttributesあなたの例では、それは正常に動作します!それは私に銃を飛ばして、それを完全にテストしないように教えてくれるでしょう... – DaddyB

0

B.あなたがHTML Parserを試してみましたか?これは、Java用の強力でオープンソースのHTML解析ライブラリです。

0

HTMLParserは素晴らしいライブラリですが、一部の商用プロジェクトには適していないLGPLです。

あなたのHTMLは、よく形成されている場合、あなたはノードを横断するDOM4Jのために行くことができ、あなたのHTMLがうまくあなたがDOM4J

0

と組み合わせて整頓を使用することができます形成されていないときに私がいます私の現在のプロジェクトではTagSoupで幸運を祈る。

0

JTidyを使用しました。それはHTMLを取り込み、いたずらを取り除くので、適切なDOMオブジェクトを持っていて、単にXPathを使ってターゲットを変更します。

関連する問題