xml文档的后缀名为xml
xml文档第一行必须是文档声明,如 < ?xml version=‘1.0‘ ? >
xml文档有且仅有一个根标签
属性值必须使用引号引起来
标签必须正确关闭
xml文档标签名大小写敏感的
<?xml version="1.0"?>
<users>
<user>
<name>aaa</name>
<age>12</age>
<gender>male</gender>
</user>
<user>
<name>bbb</name>
<age>12</age>
<gender>male</gender>
</user>
<user>
<name>ccc</name>
<age>12</age>
<gender>female</gender>
</user>
</users>
操作xml文档,将文档的数据读取到内存中
解析xml的方法:
XML常见的解析器:
Jsoup
使用步骤:
导入jar包
获取document对象
获取对应的标签,其实就是Element对象
public class JsoupDemo01 {
public static void main(String[] args) throws IOException {
// 通过类加载器,获得xml文件的路径
String path = JsoupDemo01.class.getClassLoader().getResource("users.xml").getPath();
// 获取document对象,也就是DOM树加载进内存
Document document= Jsoup.parse(new File(path), "utf-8");
// 获取元素对象,返回的Elements是ArrayList的子类
Elements elements = document.getElementsByTag("name");
System.out.println(elements.size());
Element element = elements.get(0);
System.out.println(element.text());
}
}
4.Jsoup的对象:
Jsoup:工具类,可以解析HTML 或者xml文档,返回Document,主要是parse方法,有多个重载形式
URL url = new URL("https://www.zhihu.com/question/27574436");
Document document1 = Jsoup.parse(url, 10000);// 解析某个HTML
System.out.println(document1);
Document对象:文档对象,代表着内存中的dom树
Elements:元素Element对象的集合,可以当做ArrayList< Element >使用
Element对象:元素对象
Node:节点对象,是Document和Element的父类
selector:选择器
// 获取user标签,并且id=001的子标签age标签
Elements el = document.select("user[id=\"001\"] > age");
System.out.println(el);
// 获取id值为001的元素
Elements select = document.select("#001");
System.out.println(select);
Xpath:xml路径语言,用来确定xml
具体语法要去查看Xpath文档,简单的几个
// 获取所有的user标签
JXDocument jxDocument = new JXDocument(document);
List<JXNode> jxNodes = jxDocument.selN("//user");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
// 获取所有user标签下的age标签
System.out.println("============================");
List<JXNode> jxNodes1 = jxDocument.selN("//user/age");
for (JXNode jxNode : jxNodes1) {
System.out.println(jxNode);
}
System.out.println("===============================");
// 获取带有id属性的user标签
List<JXNode> jxNodes2 = jxDocument.selN("//user[@id]");
for (JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println("===============================");
// 获取带有id属性,且属性值是001,的user标签
List<JXNode> jxNodes3 = jxDocument.selN("//user[@id='001']");
for (JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
原文:https://www.cnblogs.com/zhuobo/p/10750712.html