2009-08-09 7 views
1

C++で簡単にHTMLを簡単に変更する必要があります。たとえば、libxml2やMSHTMLを使用するとHTMLが完全に書き換えられることはありません。C++でのHTML要素の非破壊解析と変更

特に、私はすべての "img"要素の "src"属性を読み込んで(潜在的に)変更できる必要があります。どのような有効なHTMLでもこれを行うことができるほど頑丈であることが必要ですが、プロセス内の他のHTMLを変更する必要はありません。

これを処理できるライブラリはありますか?それとも正規表現でできることですか?私は正規表現にはあまり精通していません。ここでは、HTMLを解析するためにそれらを使用すべきではないと言っている多くの質問を読んできましたが、このようなものに当てはまるのか、主にHTMLからツリーを構築するコンテキストで解析することです。

+0

あなたの制約を理解しているかどうかわかりません。 DOMを使用しても、HTMLは完全に書き換えられません。 – EBGreen

+1

@EBGreen、libxmlはタグ、タグを追加し、すべてのHTMLを再フォーマットします。 MSHTMLは、すべてのタグを大文字に変更し、すべてを再フォーマットします。また、有効なHTMLはブラウザに表示できるので、DOMに分割すると元のHTMLの内容が消えてしまうことがあります。できるだけ元のHTMLを元のままにしておきたいのです。なぜなら、人々はまだ私の製品のもう一方の端でデザインをしている可能性があります。また、HTMLを見れば、製作しようとしているものとは大きく異なっています。問題である。 – Gerald

+0

申し訳ありませんが、「無効なHTMLは引き続き表示できるので...」と言っていたはずです。 – Gerald

答えて

2

正規表現は、ネストされたタグをうまく扱えないため、HTMLにはお勧めできません。この目的のためにはうまくいくはずです。

+0

ありがとう、それは私が他の質問/回答から集めたものですが、私は肯定的ではありませんでした。私はこれが最終的に正規表現を学ぶための良い言い訳になると思います。 – Gerald

+0

私はそれをお勧めします。彼らは非常に便利で、学習曲線はそれほど急なものではありません。 –

+0

私はPerlの正規表現で約8年または9年前に手をつけていましたが、私はそれをすべて忘れてしまっています。しかし、私はBoost Regexをつかんで、約10行のコードで約1時間で何をする必要があるかを理解することができました。そして、私はそのテーマについていくつかの本を注文しました。実際に私がやったことをすべて理解することができます:P – Gerald

1

私は過去に類似のもののためにそれを使用しているHTMLTidy

を見てみてください。

+0

ありがとう、私はそれに渦を立てます。 – Gerald

関連する問題