HTML&XMLパーサ
A .Jsoup概要
-
Jsoupプロフィール
jsoupは、JavaのHTMLパーサは、直接操作の非常に省力化API、することができます、CSSとjQuery同様の方法およびDOMを介してデータを削除する操作を提供するHTMLテキストを、URLアドレスを解析することができます。
同様に、JsoupはHTMLを解析することができ、XMLを解析することができます
-
Jsoupの主な機能
- HTML内のURL、ファイルまたは文字列(XML)からの解析
- データを検索し、取得するために、DOMやCSSセレクタを使用
- あなたは、HTML / XMLの要素、属性、およびテキストを操作することができます
-
Jsoup主なクラス
- Jsoup:ツールは、ドキュメントを返すためにHTMLやXML文書を解析することができます
- ドキュメント:メモリDOMツリーを表すDocumentオブジェクト
- 要素:要素オブジェクト
- 要素:要素オブジェクトは要素の集合であり、使用のArrayList <要素>として使用します
- ノード:ノードオブジェクト、親文書と要素
二.Jsoupアプリケーション
-
クイックスタート手順
- 関連のjarパッケージをインポート
- Documentオブジェクトを取得します。
- 取得したラベルに対応するElementオブジェクト
- データを取得します
XMLファイルstudent.xml
<students> <student number="0001"> <name id="itcast"> <xing>张</xing> <ming>三</ming> </name> <age>18</age> <sex>male</sex> </student> <student number="0002"> <name>jack</name> <age>18</age> <sex>female</sex> </student> </students>
package com.zzy.www.JsoupTest; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.File; import java.io.IOException; public class JsoupDemo1 { public static void main(String[] args) throws IOException { String xmlPath = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath(); // 获取Document对象 Document document = Jsoup.parse(new File(xmlPath), "utf-8"); // 获取对应标签的Element对象 获取name标签 Elements ele = document.getElementsByTag("name"); // System.out.println(ele); // 获取第一个name的Element对象 Element e1 = ele.get(0); System.out.println(e1); } }
-
プレゼンテーションを使用してAPIに関連するオブジェクト
-
Jsoup
Jsoupエントリポイントクラスは、任意のJsoupプログラムであり、そして種々の供給源及び解析HTML / XML文書からローディングするための方法を提供します。
次のように主な方法は以下のとおりです。
static Connection connect(String url)
:URLへの接続を作成し、返します。static Document parse(File in, String charsetName)
:文書ファイルの解析に文字セットを開発しますstatic Document parse(String html)
:文書を解析するために与えられたhtmlコードstatic String clean(String bodyHtml,Whitelist whitelist)
:返されたHTMLセキュリティHTMLからの入力、およびホワイトリストタグを介して濾過し、入力HTMLを解析することで、指定可能な属性。
-
資料
ドキュメントには、メモリDOMツリーを表します。
主な方法は以下のとおりです。
Element getElementById(String id)
:目的に応じて要素の一意のid属性の値を取得Elements getElementByTag(String tagName)
:ラベルコレクションに応じてオブジェクトの要素名を取得します。Elements getElementByAttribute(String key)
:属性名の要素に基づいてオブジェクトのコレクションを取得します。Elements getElementByAttributeValue(String key, String value)
:対応する属性名要素と属性値に基づいてオブジェクトのコレクションを取得
public class JsoupDemo2 { public static void main(String[] args) throws IOException { String xmlPath = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath(); // 获取Document对象 Document doc = Jsoup.parse(new File(xmlPath), "utf-8"); // 根据ID值获取Element对象 Element eleId = doc.getElementById("itcast"); System.out.println(eleId); System.out.println("================="); // 获取所有的student对象 // 通过标签名获取 Elements eleStudents = doc.getElementsByTag("student"); System.out.println(eleStudents); System.out.println("---------------------"); // 获取属性名为id的元素对象 Elements eleAttrId = doc.getElementsByAttribute("id"); System.out.println(eleAttrId); System.out.println("+++++++++++++++++++++"); // 获取属性名为number,属性值为0002的元素对象 Elements ele = doc.getElementsByAttributeValue("number", "0002"); System.out.println(ele); } }
-
要素
ArrayListの<要素>処理としてElementオブジェクトのセット、
-
素子
要素は、要素オブジェクトを表します。
主な方法は、次のカテゴリがあります。
- サブ要素オブジェクトを取得します
Element getElementById(String id)
:目的に応じて要素の一意のid属性の値を取得Elements getElementByTag(String tagName)
:ラベルコレクションに応じてオブジェクトの要素名を取得します。Elements getElementByAttribute(String key)
:属性名の要素に基づいてオブジェクトのコレクションを取得します。Elements getElementByAttributeValue(String key, String value)
:対応する属性名要素と属性値に基づいてオブジェクトのコレクションを取得
- プロパティ値を取得します。
String attr(String key)
:属性名に基づいて属性値を取得します。
- テキストの内容を取得します
String text()
:テキストコンテンツを取得String html()
:(サブ文字列タグの内容を含む)タグ本体のすべての内容を取得します。
public class JsoupDemo3 { public static void main(String[] args) throws IOException { String xmlPath = JsoupDemo1.JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath(); // 获取Document对象 Document doc = Jsoup.parse(new File(xmlPath), "utf-8"); // 先获取Element元素对象 Elements eles = doc.getElementsByTag("student"); Element ele = eles.get(0); // 获取Element元素的属性值 String attr = ele.attr("number"); System.out.println(attr); // 输出:0001 System.out.println("--------------"); // 获取元素的子元素对象 Elements ele1 = ele.getElementsByTag("name"); System.out.println(ele1); // 获取文本内容 String txt = ele1.text(); System.out.println(txt); // 输出:张 三 System.out.println("==============="); String html = ele1.html(); System.out.println(html); // 输出: // <xing> // 张 // </xing> // <ming> // 三 // </ming> } }
- サブ要素オブジェクトを取得します
-
また、セレクタセレクタを使用して、迅速かつ簡単な方法を使用することができます
static Elements select(String cssQuery)
:Jsoup公式ドキュメントを参照するには詳細な構文の必要性https://jsoup.org/apidocs/org/jsoup/select/Selector.html
public class JsoupDemo4 { public static void main(String[] args) throws IOException { String xmlPath = JsoupDemo4.class.getClassLoader().getResource("student.xml").getPath(); Document doc = Jsoup.parse(new File(xmlPath), "utf-8"); // 通过标签名查找 Elements eles = doc.select("name"); System.out.println(eles); System.out.println("----------------"); // 通过id值查找 Elements eles1 = doc.select("#itcast"); System.out.println(eles1); System.out.println("================"); // 通过属性值查找 number=0002 Elements eles2 = doc.select("[number='0002']"); System.out.println(eles2); } }
-
-
学習リンク
https://blog.csdn.net/weixin_34129696/article/details/91885803