0

私はこれをやろうとしています:

  1. Nodeでhtmlドキュメント「myDocument.html」を読む
  2. myDocument.html の open body タグの直後に、「foo.html」という名前の別の html ドキュメントのコンテンツを挿入します。
  3. myDocument.html の body タグを閉じる直前に、「bar.html」という名前のさらに別の html ドキュメントのコンテンツを挿入します。
  4. 「myDocument.html」の修正版を保存します。

上記を行うには、Node を使用して DOM を検索し、ボディの開始タグと終了タグを見つける必要があります。これはどのように行うことができますか?

4

3 に答える 3

0

簡単だが正確ではない方法で、これを行うことができます:

str = str.replace(/(<body.*?>)/i, "$1"+read('foo.html'));

str = str.replace(/(<\/body>)/i, read('bar.html')+'$1');

myDocument コンテンツに複数の「<body ..」または「</body>」が含まれている場合、たとえば javascript では機能しません。また、foo.html および bar.html に「$1」または「$2」を含めることはできません。 .

myDocument のコンテンツを編集できる場合は、次のような「プレースホルダー」を (html コメントとして) そこに残すことができます。

<!--foo.html-->

次に、この「プレースホルダー」を置き換えるだけです。

于 2013-11-14T06:16:16.200 に答える
0

簡略化された jQuery 風の API を備えたCheerioライブラリを使用します。

var cheerio = require('cheerio');
var dom = cheerio(myDocumentHTMLString);
dom('body').prepend(fooHTMLString);
dom('body').append(barHTMLString);
var finalHTML = dom.html();

そして、明確にするために、正規表現を支持する個人の軍団がすでに大勢で現れているので、そうです、本当のパーサーが必要です。いいえ、正規表現は使用できません。Stackoverflow の主任開発者であるJeff Atwood のクトゥルフ流の HTML 解析に関する投稿を読んでください。

于 2013-11-14T06:26:27.383 に答える