問題タブ [jtidy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsoup - HTML ジェリコ、jTidy、または JSoup のスニペットをフォーマットしていますか?
HTML のスニペットをフォーマット/インデントしたい
これに
jTidy と JSoup を試してみましたが、HTML を and/or で調整します。上記の例のように、HTML の一部を単純にフォーマットするものが必要です。
私は jericho を見つけました。それは私が望むことをしているようですが、jTidy/JSoup を使用したいと思います。
jTidy や JSoup でやりたいことはできますか?
java - 中国語コンテンツの jtidy 解析の問題
次の中国語コンテンツで jtidy パーサーの問題に直面しています。
解析後、文字「e」の後に余分な e が返されます...
jtidyの最新バージョンを使用しています。
java - Jtidy - インライン要素間のスペースを保持する方法
このような私のHtmlソース
変換後の出力は次のようになりました(スペースなし):- HelloWorld
java - jTidy プリティ プリント カスタム HTML タグ
私はJTidyを使用して、ユーザーが生成した整形式のHTMLをきれいに印刷しようとしています:
これは私の設定です:
しかし、jTidy は私の AngularJSdatasource
ディレクティブを削除しています。この問題を回避する方法はありますか?
ログからこれを取得しています:
削除tidy.setXHTML(true)
または false に設定して追加すると、tidy.setXmlTags(true)
実際にこの問題が解決され、ユーザー定義のタグが考慮され始めますが、JTidy が自己囲みタグを閉じようとするため、これは適切な解決策ではありません。
テキスト エディター用のフォーマッターが必要です。ユーザーがどのディレクティブを定義して使用するかは保証できません。これは、ユーザー定義のディレクティブで機能する一般的なソリューションでなければなりません
java - Jmeter の Jtidy StringIndexOutOfBoundsException
JMeter を使用して Web ページからコンテンツを取得したいと考えています。
私が探しているデータは、javascript ブロック内にあります。
変数がname
あるマップ id=id1 のスクリプト ブロック内の変数の値が必要だとしましょう。 song
XPath Extractor を使用してスクリプト コンテンツを取得します (純粋な HTML ではないため、CSS/Jquery は JavaScript コンテンツを取得しません)。
.//map[@id='id1']/script[contains(.,'song')]
私のHTMLが汚れているため(タグの末尾が欠落しているワイルドなものなど...)、XPathはデータを見つけられないので、Jtidyを使用してクリーンアップする必要があります(「Tidy(寛容なパーサー)」オプションを使用します)
備考 :
- 私は処理中の Web ページを所有していません。この恐ろしい HTML に対処しなければなりません。
- Webページには多くのmaps
要素があり、それぞれに変数を持つスクリプトがありsong
ます:正規表現を直接使用することはできません(私の知る限り)
問題 :
問題は次のとおりです。私の HTML には奇妙な国際文字wé hà bêêêêが含まれています... (はい、フランス語、申し訳ありません)。Jtidy はこの特定のケースを適切に処理しません:バグ #205 StringIndexOutOfBoundsException while lexing script content
その結果、Xpath エクストラクタが失敗し、テスト計画全体が動かなくなります。
カスタム ソリューションを設計しましたが、少し複雑です。多分私はこれをより良い方法で処理できます。
私の解決策:
tagsoup Java ライブラリを使用して HTML 出力をクリーンアップし、それを JMeter 変数に格納してから Xpath を介して処理し (「適用先」の「JMeter 変数」オプションにチェックマークを付けます)、最後に正規表現を使用して Lionel Richie のものを機能させました.. .
JMeter
|->HTTP Request
|->BeanShell PostProcessor->tagsoup > var RESPONSE
|->Xpath Extractor, Apply to var RESPONSE > var XPATH_OUTPUT
|->Regular Expression Extractor, Apply to var XPATH_OUTPUT
JMeter で tagsoup を動作させるには、jar を lib ディレクトリに置き、BeanShell PostProcessor を使用します。
使用される BeanShell コード:
java - JTidy は「3 つのエラーが見つかりました!」と報告しますが、それが何であるかはわかりません
プログラムで生成された HTML の大きなブロックがあります。次の Java コードを使用して、Tidy (バージョン r938) で実行しました。
次の出力が得られます。
問題は、Tidy が検出した 3 つのエラーを教えてくれないことです。
私はここで少しいじっています。上記の出力は、実際には 247 個の警告すべての長いリストに従います (ほとんどの場合、空div
の要素が削除されます)。tidy.setShowWarnings(false)
;でそれらを抑制できます。いずれにせよ、エラー レポートが表示されないため、何を修正する必要があるかわかりません。300Kb の HTML は、私には多すぎて目を見張ることができません。
エラーを見つけるために多くのアプローチを試みました。残念ながら、validate.w3.org を介して実行することはできません。HTML ファイルは独自のネットワーク上にあるためです。最も有益なアプローチは、IntelliJ IDEA で開くことでした。これにより、12 個ほどの重複した div ID が明らかになったので、これを修正しました。エラーはまだ発生しました。
この問題に関する他の言及を探しました。「JTidyを使用して解析されたHTMLからエラー/警告メッセージを取得するにはどうすればよいですか?」などのヒットをたくさん見つけましたが、、彼らは皆、異なることを求めているか、単に私には当てはまらない条件を想定しているようです. たとえば、警告は問題なく表示されます。それは私が必要とするエラーであり、電話をかけても報告されていませんsetShowErrors(100)
。
Tidy のソース コードに飛び込んでデバッグし、エラーが報告されたところから開始する必要がありますか? または、私ができるもっと簡単なことはありますか?
java - JTidy はスクリプト要素内の HTML タグを処理できません
(これは数日前に発生した問題のフォローアップです。JTidy は 300k の HTML ドキュメント内で 3 つのエラーを報告していましたが、どこで報告していませんでした。問題を少し掘り下げた後、エラーの原因と思われるものを見つけました。私はその理由について強い疑いを持っていますが、それについてどうするかはまだ決めていません.)
以下は、JTidy がエラーを報告する小さなスタンドアロン HTML 式です。
Javascript 文字列定数には HTML タグが含まれており、これらは一貫して JTidy をオフにします。下線要素を削除すると、JTidy は完全に解析を終了します。より正確には、JTidy のパーサーは終了タグでエラーを報告します。開始タグは問題ありません (出力は多少間違っている可能性がありますが、後の目的には十分でした)。文字列をコメントアウトしても、エラーが報告されます。
上記は有効な HTML であると言っても過言ではありません。しかし、それについて何をすべきかについてのドキュメントが見つかりません。調べてみると、これは tidy-html5 で修正されていることがわかりました。Java ポートである JTidy でのみ壊れているようです。
もう少し検索すると、SourceForge ページによると、最新の JTidy を使用していることがわかりました。バージョン r938 は、私の Maven リポジトリにあるバージョンです。(実際には、この問題をデバッグできるように、ソースはサンドボックスに解凍されています。) 上でリンクしたバグ レポートは 2015 年のものです。JTidy r938 は 2009 年に登場しました。
JTidyがこれを間違って処理していると信じているのは正しいですか? もしそうなら、私はそれを修正しようとするべきですか、それともいくつかのプライベートブランチで対処されていますか? 私は自分自身をパーサー/レクサーの専門家とは呼びませんが、必要に応じて混乱することはできます。