XML相关

本文介绍了如何使用JSoup库处理XML文档,包括解析XML、获取元素、选择特定标签和属性,以及使用XPath进行高级查询。示例代码展示了对XML文档中学生信息的提取和操作,对于理解和实践XML处理非常有帮助。
摘要由CSDN通过智能技术生成

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<?xml-stylesheet type="text/css" href="a.css" ?>

<users>
    <user id="1">
        <name>张三</name>
        <age>18</age>
        <gender>男</gender>
    </user>

    <user id="2">
        <name>白金</name>
        <age>17</age>
        <gender>女</gender>
    </user>
<code>
    <![CDATA[
    if(a>b && b<c){}
]]>
</code>


</users>

css文件: 

name{
    color: red;
}

约束

xml文件: 

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<!--本地约束dtd文件-->

<students>
    <student number="s001">
        <name>zhangsan</name>
        <age>18</age>
        <sex>male</sex>
    </student>
</students>

dtd文件:

<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA) >
<!ELEMENT sex (#PCDATA) >
<!ATTLIST student number ID #REQUIRED >

解析

xml文档:

<?xml version="1.0" encoding="utf-8" ?>


<students>
    <student number="s001">
        <name>银灰</name>
        <age>18</age>
        <sex>male</sex>
    </student>
    <student number="s002">
        <name>白金</name>
        <age>17</age>
        <sex>女</sex>
    </student>
</students>

解析程序:

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 get_xml_test_1 {
    public static void main(String[] args) throws Exception {
        String path = get_xml_test_1.class.getClassLoader().getResource("student.xml").getPath();
        //获取资源文件
        Document document = Jsoup.parse(new File(path), "utf-8");
        //解析xml文档,加载文档进内存
        Elements names = document.getElementsByTag("name");
        //获取文档中的name元素,返回值是一个元素集
        Element element = names.get(0);
        //获取name元素集的第一个元素,返回值是第一个元素
        String text = element.text();
        //将获取到的第一个元素,转化为text格式
        System.out.println(text);
        //打印第一个name元素

    }
}

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 jsoup_xml_document {
    public static void main(String[] args) throws IOException {
        String path = jsoup_xml_document.class.getClassLoader().getResource("student.xml").getPath();
        Document parse = Jsoup.parse(new File(path), "utf-8");


        Elements allElements = parse.getAllElements();
        //获取所有的元素,返回一个元素集
        System.out.println(allElements);
        System.out.println("---------------------------------------");

        //获取id为saw的元素
        Element saw = parse.getElementById("saw");
        System.out.println(saw);
        System.out.println("---------------------------------------");

        //获取姓名为id的元素对象们
        Elements id = parse.getElementsByAttribute("id");
        System.out.println(id);
        System.out.println("---------------------------------------");

        //获取number属性值为s002的元素对象
        Elements elementsByAttributeValue = parse.getElementsByAttributeValue("number", "s002");
        System.out.println(elementsByAttributeValue);
        System.out.println("---------------------------------------");

        //获取所有student对象
        Elements student = parse.getElementsByTag("student");
        System.out.println(student);

    }
}

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 jsoup_xml_element {
    public static void main(String[] args) throws IOException {
        String path= jsoup_xml_element.class.getClassLoader().getResource("student.xml").getPath();
        Document document = Jsoup.parse(new File(path),"utf-8");

        //获取所有name标签,返回一个name标签的元素集
        Elements names = document.getElementsByTag("name");
        System.out.println(names);
        System.out.println("-----------------------------------");

        //获取student标签的第一个属性,再获取第一个属性的name标签的元素值
        Element student = document.getElementsByTag("student").get(0);
        Elements name = student.getElementsByTag("name");
        System.out.println(name);
        System.out.println("-----------------------------------");
        //获取number标签的元素值
        String number = student.attr("number");
        System.out.println(number);

        //获取student标签中的文本内容,不包括标签
        String text = student.text();
        System.out.println(text);
        System.out.println("-----------------------------------");
        //获取student标签的所有内容,包括标签
        String html = student.html();
        System.out.println(html);
    }
}

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

public class jsoup_xml_select {
    public static void main(String[] args) throws IOException {
        String path = jsoup_xml_select.class.getClassLoader().getResource("student.xml").getPath();
        Document doc = Jsoup.parse(new File(path),"utf-8");

        //获取所有的name标签
        Elements name = doc.select("name");
        System.out.println(name);
        System.out.println("-------------------------");

        //获取id为saw的标签
        Elements select = doc.select("#saw");
        System.out.println(select);
        System.out.println("-------------------------");

        //获取student中的number属性值为s002的age标签内容
        Elements select1 = doc.select("student[number=\"s002\"] > age");
        System.out.println(select1);
        System.out.println("--------------------------");

    }
}

import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException;
import cn.wanghaomiao.xpath.model.JXDocument;
import cn.wanghaomiao.xpath.model.JXNode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class jsoup_xml_Xpath {
    public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
        String path = jsoup_xml_Xpath.class.getClassLoader().getResource("student.xml").getPath();
        Document document = Jsoup.parse(new File(path),"utf-8");

        //创建JXDocument对象
        JXDocument jxDocument = new JXDocument(document);


        //获取所有student标签元素,返回一个JXNode类型的集合
        List<JXNode> jxNodes = jxDocument.selN("//student");
        for (JXNode jxNode : jxNodes) {
            System.out.println(jxNode);
        }
        System.out.println("----------------------------------------------");

        //获取所有student标签下的name标签元素,返回一个JXNode类型的集合
        List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
        for (JXNode jxNode : jxNodes2) {
            System.out.println(jxNode);
        }
        System.out.println("----------------------------------------------");

        //获取所有student标签下的name标签的带有id属性的元素,返回一个JXNode类型的集合
        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
        for (JXNode jxNode : jxNodes3) {
            System.out.println(jxNode);
        }
        System.out.println("----------------------------------------------");

        //获取所有student标签下的name标签的带有id属性=gray的元素,返回一个JXNode类型的集合
        List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='gray']");
        for (JXNode jxNode : jxNodes4) {
            System.out.println(jxNode);
        }
        System.out.println("----------------------------------------------");

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值