java入坑之Jsoup(待补充)

news2024/12/28 6:23:50

一、快速入门

1.1配置

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.16.1</version>
</dependency>

1.2解析xml

Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery
的操作方法来取出和操作数据。
* 快速入门:
步骤:
1.导入jar包
2.获取Document对象
3.获取对应的标签Element对象
4.获取数据

1.2.1所用xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
        1.填写xml文档的根元素
        2. |入xsi前缀.__xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        3. <tex>\overline {5}</tex> 入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
        4.为每一个xsd约束声明一个前缀,作为标识_xmlns="http://www.itcast.cn/xml"
        -->
<students >
    <student number="heima_0001">
        <name>tom</name>
        <age>18</age>
         <sex>male</sex>
    </student>
    <student number="heima_0002">
        <name>to</name>
        <age>18</age>
        <sex>female</sex>
    </student>
</students>

1.2.2Jsoup解析

package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
//3.获取元素对象_Element
        Elements elements = document.getElementsByTag("name");
        System.out.println(elements.size());
//3.1获取第一个name的Element对象
        Element element = elements.get(0);
//3.2获取数据
        String name = element.text();
        System.out.println(name);
    }
}

1.3对象的使用

1.3.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的文档对象

1.3.2Document对象

Document:文档对象。代表内存中的dom树
* 获取Element对象

  • getElementById(String id):根据id属性值获取唯一的element对象
  • getElementsByTag(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合

1.3.3.Element对象

.Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
Element:元素对象
1.获取子元素对象

  • getElementById(String id):根据id属性值获取唯一的element对象
  • getElementsByTag(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合

2.获取属性值

  • * String attr(String key):根据属性名称获取属性值

3.获取文本内容

  • String text():获取文本内容 T
  • string  html();获取标签体的所有内容(包括字标签的字符串内容
package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        Element element = document.getElementsByTag("student").get(0);
        Elements name = element.getElementsByTag("name");
        System.out.println(name.size());
    }
}

1.3.4Node对象

Node :节点对象
是Document和E lement的父类

1.4快速查询

快捷查询方式:
1.selector;选择器
* 使用的方法:Elements    select(String cssQuery)
*  语法:参考selector类中定义的语法
2.XPath:XPath即为XML路径语言,它是一种用来确定 'XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath需要额外导入jar包。 T
* 查询w3cshool参考手册,使用xpath的语法完成查询

通过选择器查询

package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        //4.查询id值为itcast的元素
        Elements elements1 = document.select(  "#itcast");
        System.out.println(elements1);
        System.out.println("----------------");
//5.获取student标签并且number属性值为heima_0001的age子标签
//5.1.获取student标签并且number属性值为heima_0001
        Elements elements2 = document.select(  "student[number=\"heima_0001\"]");
        System.out.println(elements2);
        System.out.println("----------------");
//5.2获取student标签并且number属性值为heima_0001的age子标签
        Elements elements3 = document.select( "student[number=\"heima_0001\"] > age");
        System.out.println(elements3);

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker HarborDocker Registry

目录 介绍 Harbor和Registry的比较 搭建Dokcer Harbor Docker Registry安装 介绍 Harbor&#xff0c;是一个英文单词&#xff0c;意思是港湾&#xff0c;港湾是干什么的呢&#xff0c;就是停放货物的&#xff0c;而货物呢&#xff0c;是装在集装箱中的&#xff0c;说到集装…

台式COD快速测定仪操作说明

实验室检测水中COD指标需要消解&#xff0c;要准备好实验室多参数水质测定仪和配套智能型的消解器。所有配件准备齐全就可以进行水样的检测&#xff0c;检测流程以及操作说明如下图&#xff1a; 仪器的选定也需要根据实际的情况进行选择&#xff0c;最好选择指标可以定制的仪器…

软件测试(测试用例攻略)—写用例无压力

一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤&#xff1a; 测试环境——测试步骤—…

stack栈、queue队列、list链表容器

目录 stack栈容器 stack概念和定义 stack构造函数: stack数据操作: queue队列容器 queue概念和定义 queue构造函数 queue数据操作 list链表容器 list概念和定义 list构造函数 list赋值和交换 list大小操作 list插入和删除 list数据储存 list反转和排序 stack栈…

2023年汉字小达人区级比赛倒计时2天,最新问题解答和真题练一练

今天是9月23日&#xff0c;距离2023年第十届汉字小达人区级比赛&#xff08;初赛&#xff09;的自由报名参赛时间还有2天&#xff0c;六分成长结合家长和小朋友们问的比较多的问题进行解答&#xff0c;并提供一些真题供大家练习、了解比赛题型和规则。 问题1&#xff1a;2023年…

WPS文件找回怎么做?文件恢复,4个方法!

“我平时习惯了用wps来记录一些工作心得或重点&#xff0c;不知道什么原因&#xff0c;有些很重要的文件莫名不见了&#xff0c;有什么方法可以帮我找回wps文件吗&#xff1f;” wps作一个常用的办公软件&#xff0c;有效的提高了我们的工作效率。在日常使用wps时&#xff0c;可…

学信息系统项目管理师第4版系列10_变更管理与文档管理

1. 文档管理 1.1. 分类 1.1.1. 开发文档 1.1.1.1. 描述开发过程本身 1.1.1.2. 可行性研究报告和项目任务书、需求规格说明、功能规格说明、设计规格说明&#xff08;包括程序和数据规格说明、开发计划、软件集成和测试计划、质量保证计划、安全和测试信息等&#xff09; 1…

maven中relativepath标签的含义

一 relative标签的含义 1.1 作用 这个<parent>下面的<relativePath>属性&#xff1a;parent的pom文件的路径。 relativePath 的作用是为了找到父级工程的pom.xml;因为子工程需要继承父工程的pom.xml文件中的内容。然后relativePath 标签内的值使用相对路径定位…

学习自定义SpringBoot Starter组件 (超详细的图文教程,从理论到实战)

前言&#xff1a; 通过这篇文章 你能了解SpringBoot Starter的概念和用处 并且通过实战 自定义一个SpringBoot Starter 来实现数据脱敏的功能 加油 搬砖人~ 今天不学习&#xff0c;明天变垃圾。 一、什么是SpringBoot Starter&#xff1f;用SpringBoot Starter能带来什么好处…

【04】FISCOBCOS扩容新节点

官方文档https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/add_new_node.html 为节点生成证书并启动 每个节点都需要有一套证书来与链上的其他节点建立连接,扩容一个新节点,首先需要为其签发证书。为新节点生成私钥证书 接下来的操作都在nodes/…

MQ---第一篇

系列文章目录 文章目录 系列文章目录一、简述RabbitMQ的架构设计二、RabbitMQ如何确保消息发送 ? 消息接收?一、简述RabbitMQ的架构设计 Broker:rabbitmq的服务节点 Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中。生产 者投递消息到队…

百度SEO优化的技巧大全(全面掌握SEO优化方法)

百度优化SEO内容优化介绍 为了提高网站在百度搜索结果中的排名&#xff0c;需要进行百度SEO优化&#xff0c;其中内容优化是非常重要的一环。内容优化包括网站结构、网页质量、关键词密度等方面。首先&#xff0c;网站结构应该简洁清晰&#xff0c;方便用户导航和搜索引擎爬虫…

LeetCode_二叉树_中等_1448.统计二叉树中好节点的数目

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输…

【AI视野·今日NLP 自然语言处理论文速览 第三十九期】Fri, 22 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 22 Sep 2023 Totally 59 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models Authors Yukang Chen, Shengju Qia…

基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(八)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这个部分是这个单元最后内容了&#xff0c;就是点击消息更多的一些代码与逻辑。 1、需要在我的个人中心里…

Plant Simulation 与Web交互 V3.0工具

Plant Simulation WebTool V3.0工具&#xff0c;仅需简单设置&#xff0c;web与Plant Simulation可以双向通信&#xff0c;Web端可以缩放、旋转、平移操作 WebTool 工具

软件测试笔试

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试 文章简介&#xff1a;记录了我在笔试、面试过程中遇见的一些小问题 1.软件的生命周期&#xff1a;需求分析、计划、设计、编码、测试、运行维护 2.软件测试的生命周期&#xff1a;需求分析、测试计划、测试设计/开发、测试执…

Vue.js 2—插槽 Slots

我们已经了解到组件能够接收任意类型的 JavaScript 值作为 props &#xff0c;但组件要如何接收模板内容呢? 在某些场景中&#xff0c;我们可能想要为子组件传递一些模板片段&#xff0c;让子组件在它们的组件中渲染这些片段。 此处&#xff0c;传递的是标签结构而不再是数据…

libpcap之PF_PACKET协议族

一、kernel中PF_PACKET协议族注册 af_packet.c module_init(packet_init);static int __init packet_init(void) {int rc proto_register(&packet_proto, 0);if (rc ! 0)goto out;sock_register(&packet_family_ops);register_pernet_subsys(&packet_net_ops);r…

威胁追踪如何增强您的网络安全态势

网络威胁的复杂性、频率和影响正在加剧。2022 年&#xff0c;勒索软件攻击达到2.361 亿次&#xff0c;其中 39% 的英国企业遭受网络攻击。 这些攻击需要工具和资源来识别和纠正漏洞&#xff0c;以在云环境中维护强大的安全框架&#xff0c;从而降低数据泄露和合规违规的风险。…