XML文件解析器–Jsoup入门
概念:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
快速入门步骤:
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据,得到文本
public static void main(String[] args) throws Exception{
//定义xml文件路径
String path = "Code//xml//demo.xml";
//[1]获取document的对象
Document doc = Jsoup.parse(new File(path), "utf-8");
//[2]获取Element的对象
//底层代码: class Elements extends ArrayList<Element>
Elements es = doc.getElementsByTag("name");
//[3]循环遍历集合 es
for (Element e : es) {
//得到文本
String text = e.text();
System.out.println("text = " + text);
}
}
上面是一个基础入门案例,通过static Document parse(File in, String charsetName)该方法获取到
xml文件的路径并且指定编码格式。
对象的使用:
1. Jsoup:工具类,可以解析html或xml文档,返回Document
parse:解析html或xml文档,返回Document
parse(File in, String charsetName):解析xml或html文件的。
parse(String html):解析xml或html字符串
parse(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
2. Document:文档对象。代表内存中的dom树
获取Element对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
4. Element:元素对象
1. 获取子元素对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
2.获取父元素对象
Element parent():获取当前便签的父节点
2. 获取属性值
String attr(String key):根据属性名称获取属性值
3. 获取文本内容
String text():获取文本内容
String html():获取标签体的所有内容(包括字标签的字符串内容)
举例:
xml文档内容如下
<?xml version='1.0' encoding="utf-8" ?>
<lol>
<hero id="中单">
<name>托儿索</name>
<age>3</age>
<sex>男</sex>
</hero>
<hero id="上单">
<name>小学生之手</name>
<age>5</age>
<sex>女</sex>
</hero>
<hero id="下单">
<name>儿童劫</name>
<age>9</age>
<sex>未知</sex>
</hero>
</lol>
通过以上的方法来解决下面两个问题
1.获取“上单”的信息(包括name,age,sex)
2.获取“儿童劫”的位置文本信息
public static void main(String[] args) throws IOException {
System.out.println("------第一题--------------");
String path = "myday12//src//xml/chaoshen.xml";
//获取document对象
Document doc = Jsoup.parse(new File(path), "utf-8");
//根据对应的属性名和属性值获取元素对象集合
Elements value = doc.getElementsByAttributeValue("id", "上单");
//获取到文本值
String vtext = value.text();
System.out.println(vtext);
System.out.println("------第二题---------");
Elements name = doc.getElementsByTag("name");
//遍历得到的elements集合
for (Element element : name) {
//通过equals方法判断获取到的name文本值是否为"儿童劫"
if (element.text().equals("儿童劫")){
String id = element.parents().attr("id");
System.out.println("儿童劫:" + id);
}
}
}