4

xml 用のいくつかの単純な perl dom パーサーの作成者は、XML::LibXML を支持して混合コンテンツの使用を思いとどまらせているようです。だから私は今、XML::LibXML を学び始めており、よく使われるクックブックの例を探しています。Web から (x)html ドキュメントを読み取り、それを操作することを考えてみてください。(perl クックブックの第 2 版は現在 10 年前のものであり、ここでのカバー範囲は比較的弱いものです。) 私は次のことから始めたいと考えました。

use XML::LibXML;
my $dom = XML::LibXML->load_xml( location => "fame-1-1.html", recover => 2 );
## recover=>2 is needed to allow valid html entities

スターターが使用できる良いレシピの例には、

  1. $dom を perl データ構造に変換します。Data::Dumper($dom) では特に興味深い結果は得られませんでした。もちろん、from と to の両方の方法で変換したいと考えています。

  2. おそらく何らかの制御を行って、出力をきれいに印刷します。

  3. html を xhtml にサニタイズします。

  4. ロジックで変換を行います。(個々の dom 要素で物事を行う良い例がありますが、私はより一般化できると考えています。) たとえば、2 つの連続した dom 要素を操作するにはどうすればよいでしょうか? 私はXABを持っています。このように連続している場合は、「クラス」または「スタイル」を sup に追加します (例: style="width:0")。

  5. すべてのクラスとスタイルを最小限のテンプレート スタイル シートに分割します。

  6. XML::LibXML の他の「クール」で「シンプル」な使用法。

  7. (有用なレシピに応じて質問を後で編集するために残されています)提案:

    (a) <ul> 内の <li> ごとに id を増やして列挙します (例: <li id="1"> ... <li id="2"> ...)。複数の要素で行うことができます

    (b) 複数のタグを繰り返す (例: すべての li、dl、および dt を出現順に出力する)

サンプルを高く評価しました。

/iaw

4

1 に答える 1