XML(Extensible Markup Language可拓展标记语言)
2.功能存储数据,一般用于做配置文件,或者在网络中传输(通常用json文件)
3.XML和HTML区别- xml标签是自定义的,所以需要有约束文件。xml的语法严格,html语法松散xml主要用于存储数据,html展示数据
文档后缀名xml第一行是文档声明xml中有且仅有一个根标签属性值要用(单双)引号引起来区分大小写 5.快速入门
6.主要部分 1.文档声明 1.格式zhangsan 23 male
lisi 24 female
2.属性列表
version:版本号,一般用1.0encoding:编码方式。standalone:是否独立,yes 或者 no用于表示是否依赖其他文件 2.属性
id值是唯一的
2.约束:规定XML文档的书写诡诈 1.要求能够在xml中引入约束文档能够简单读懂约束文档 2.分类 1.DTD:document Type Define,简单的文档类型约束技术 1.将约束规则引入xml文件中两种方式
本地:网络: 2.快速入门
]>
张三
12
男
李四&msg;
12
男
2.Schema:略微复杂的xml文档约束技术
3.解析 1.方式tom 18 male
DOM
将标记语言一次性加载进内存形成DOM树。因为比较占内存,所以一般用于PC端
SAX
逐行读取,是基于事件驱动的,一般用于手机端,因为内存小。
2.XML解析器JSOUP 1.快速入门 1.步骤- 导入jsoup的jar包获取document对象获取标签Element对象获取数据
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dom树--->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);
2.主要对象使用
1.document
Jsoup静态方法parsexml文件获取
2.Element通过getElementByxx获取,下面也会介绍快捷的方式select获取xpath获取
3.获取属性值String attr(String key)
4.获取文本string text()string html() 3.快捷查询1selector
select(String cssQuery),就是css中定位元素的方法参考文档中的Selector类中的方法 4.快捷查询2xpath
需要导入xpath对应的jar包
new JXdocument对象,参数为jsoup获取的document对象
代码
//1.获取student.xml的path
String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
//2.获取document对象
document document = Jsoup.parse(new File(path), "utf-8");
//3.根据document对象,创建JXdocument对象
JXdocument jxdocument = new JXdocument(document);
//4.结合xpath语法查询
//4.1查询所有student标签
List jxNodes = jxdocument.selN("//student");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.2查询所有student标签下的name标签
List jxNodes2 = jxdocument.selN("//student/name");
for (JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.3查询student标签下带有id属性的name标签
List jxNodes3 = jxdocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
System.out.println("--------------------");
//4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
List jxNodes4 = jxdocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes4) {
System.out.println(jxNode);
}



