XML技术

本文深入探讨了XML技术,包括其特点、应用,如配置文件和数据传输。对比了XML与HTML的区别,并详细介绍了XML的基本语法和组成部分。进一步讲解了XML的约束,如DTD和Schema验证。此外,文章详述了多种XML解析方式,如DOM、SAX、JDOM和DOM4J,并提供了使用Jsoup和XPath的实例。最后,通过一个案例展示了如何利用Jsoup进行网页爬虫,使用XML配置爬虫参数。
摘要由CSDN通过智能技术生成

1、XML

在这里插入图片描述

1.1 XML特点

在这里插入图片描述

1.2 XML的应用

在这里插入图片描述
在这里插入图片描述

1.2.1 配置文件

在这里插入图片描述

1.2.2 传输数据

在这里插入图片描述

1.3 XML和HTML的区别

在这里插入图片描述
在这里插入图片描述

1.4 XML基本语法

在这里插入图片描述

1.5 XML组成部分

在这里插入图片描述

1.5.1 文档声明

在这里插入图片描述

1.5.2 标签

在这里插入图片描述

1.5.3 指令

在这里插入图片描述

1.5.4 属性

在这里插入图片描述

1.5.5 文本

在这里插入图片描述

2、约束

在这里插入图片描述

2.1 DTD 约束

在这里插入图片描述

  • student.dtd
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
  • student.xml
<?xml version="1.0"?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
    <student number="A1001">
        <name>AA</name>
        <age>18</age>
        <sex>man</sex>
    </student>
    <student number="B1001">
        <name>BB</name>
        <age>28</age>
        <sex>woman</sex>
    </student>
</students>

2.1.1 DTD验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 Schema 约束

在这里插入图片描述
在这里插入图片描述

2.2.1 Schema验证

  • book.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="books">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="book" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string"></xs:element>
                            <xs:element name="author" type="xs:string"></xs:element>
                            <xs:element name="price" type="xs:double"></xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
  • book.xml
<?xml version="1.0" encoding="UTF-8" ?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="book.xsd" >
    <book id="1001">
        <name>java开发实战</name>
        <author>张小三</author>
        <price>98.5</price>
    </book>
</books>
  • Demo.java
import org.xml.sax.SAXException;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.File;
import java.io.IOException;

public class Demo {
   
    public static void main(String[] args) throws SAXException{
   
        // 创建SchemaFactory工厂
        SchemaFactory sch = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
        // 建立验证文件对象
        File schemaFile = new File("src/com/jsoup/xml/book.xsd");
        // 利用SchemaFactory工厂对象,接收验证的文件对象,生成Schema对象
        Schema schema = sch.newSchema(schemaFile);
        // 产生对此schema的验证器
        Validator validator = schema.newValidator();
        // 验证的数据(准备的数据源)
        Source source = new StreamSource("src/com/jsoup/xml/book.xml");
        // 开始验证
        try {
   
            validator.validate(source);
            System.out.println("验证成功");
        } catch (IOException e) {
   
            e.printStackTrace();
            System.out.println("验证失败");
        }
    }
}

3、XML解析

在这里插入图片描述

3.1 XML解析思想

在这里插入图片描述

3.2 常见解析器

在这里插入图片描述

3.3 Jsoup解析器

3.3.1 Jsoup解析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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;
import java.net.URL;

public class Demo {
   
    public static void main(String[] args) throws IOException {
   
        // 解析本地xml文件
        String path = Demo.class.getClassLoader().getResource("com/jsoup/xml/index.html").getPath();
//        System.out.println(path);
        Document document = Jsoup.parse(new File(path),"utf-8");
//        System.out.println(document);
        // 解析字符串
//        Document doc = Jsoup.parse("<!DOCTYPE html>\n" +
//                "<html lang=\"en\">\n" +
//                "<head>\n" +
//                "    <meta charset=\"UTF-8\">\n" +
//                "    <title>Title</title>\n" +
//                "</head>\n" +
//                "<body>\n" +
//                "    <p>Hello world!</p>\n" +
//                "</body>\n" +
//                "</html>");
//        System.out.println(doc);

        // 解析网络资源
//        Document doc1 =  Jsoup.parse(new URL("https://www.baidu.com/s?wd=xml+schema"),5000);
//        System.out.println(doc1);
        // 根据id获取元素
//        Element e1 = document.getElementById("hh");
        // 根据标签获取元素
        Elements e1 = document.getElementsByTag("p");
//        for (Element element : e1) {
   
//            System.out.println(element);
//            System.out.println(element.text());
//        }
        // 根据属性获取元素
        Elements e2 = document.getElementsByAttribute("name");
//        for (Element element : e2) {
   
//            System.out.println(element);
//        }
        // 根据属性名=属性值获取元素
        Elements ee = document.getElementsByAttributeValue("name","ttt");
//        for (Element element : ee) {
   
//            System.out.println(element);
//        }
        // 使用css选择器获取元素
        Elements select = document.select("#hh");
        System.out.println(select.text()); // 获取文本值
        System.out.println(select.html()); // 获取文本值,如果有标签,也会显示出来
        System.out.println(select.attr("id")); // 获取id属性的属性值
    }
}

3.3.2 XPath解析

在这里插入图片描述

import cn.wanghaomiao.xpath.model.JXDocument;
import cn.wanghaomiao.xpath.model.JXNode;
import 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值