ホームページ  >  記事  >  ウェブフロントエンド  >  HTMLParserの使い方を詳しく解説(2)

HTMLParserの使い方を詳しく解説(2)

黄舟
黄舟オリジナル
2016-12-29 15:52:181106ブラウズ

HTMLParser は、解析された情報をツリー構造として保存します。ノードは、情報を保存するためのデータ型の基礎です。
Node の定義を見てください:

public interface Node extends Cloneable;

Node にはいくつかの種類のメソッドが含まれています:
ツリー構造を横断する関数については、これらの関数が最も理解しやすいです:

Node getParent ():取得父节点
NodeList getChildren ():取得子节点的列表
Node getFirstChild ():取得第一个子节点
Node getLastChild ():取得最后一个子节点
Node getPreviousSibling ():取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)
Node getNextSibling ():取得下一个兄弟节点

Node のコンテンツを取得する関数:filterフィルタリングに使用される

String getText ():取得文本
String toPlainTextString():取得纯文本信息。
String toHtml () :取得HTML信息(原始HTML)
String toHtml (boolean verbatim):取得HTML信息(原始HTML)
String toString ():取得字符串信息(原始HTML)
Page getPage ():取得这个Node对应的Page对象
int getStartPosition ():取得这个Node在HTML页面中的起始位置
int getEndPosition ():取得这个Node在HTML页面中的结束位置

関数:訪問者のトラバーサルに使用される
void collectInto (NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。

機能:

rreee


機能コンテンツの変更に使用されますが、このタイプはあまり使用されていません。実際には、HTML ページを処理するために HTMLParser を最もよく使用します。Filter または Visitor 関連の関数が必要であり、1 番目と 2 番目のタイプの関数が最もよく使用されます。最初のタイプの関数を理解するのが簡単です。例を使用して 2 番目のタイプの関数を説明します。
以下はテストに使用したHTMLファイルです:

void accept (NodeVisitor visitor):对这个Node应用visitor

テストコード:

void setPage (Page page):设置这个Node对应的Page对象
void setText (String text):设置文本
void setChildren (NodeList children):设置子节点列表

出力結果:

void doSemanticAction ():执行这个Node对应的操作(只有少数Tag有对应的操作)
Object clone ():接口Clone的抽象函数。

===================== = ===========================

最初のノードのコンテンツの場合、対応する行は e9764a354fa9ee8e01cb1b94d530cd6c タグ内の Title コンテンツはプレーンテキストであるため、タイトル内に表示されていても表示される可能性があります。さらに、前述したように、HTML コンテンツ内の改行やその他の文字もプレーンテキストになっています。これは少し論理的な問題のようです。

さらに、toHtml、toHtml(true)、toHtml(false)の結果に違いがないことがわかるかもしれません。これは実際に当てはまります。HTMLParser のコードをたどると、AbstractNode、RemarkNode、 TagNode と TextNode、toHtml(boolean verbatim) の実装では、verbatim パラメーターは処理されないため、3 つの関数の結果はまったく同じになります。独自の特別な処理を実装する必要がない場合は、単純に toHtml を使用します。


上記は HTMLParser の使用方法の詳細な説明 (2) です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。