xml_概述
什么是xml?
xml是可扩展标记语言(extensible markup language)
自定义的;
xml的作用?
展示数据(废弃):
存储数据:
配置文件使用;
网路数据交换;
xml_快速入门
xml文档的后缀名?
.xml
第一行内容?
<?xml version='1'?>
1.必须顶头写!!!!
2.标识当前文档是xml文档,并且知名一下版本;
根标签可以有多个吗?
区分大小写么?
区分!!!!
组成部分
组成部分?
文档声明;
encoding;
不指定,默认使用iso-8859-1;
standalone;
指令(了解);
标签;
属性;
文本;
xml中怎么写 类似于java代码的特殊文本?
<![CDATA[数据]]>
xml_约束概述
约束有什么用?
规定xml文档中可以些什么!!!!
学习约束的目的?
重点:
在xml中,如何引入约束文档
约束_dtd
如何引入外部dtd文档?
约束_schema 英 /'skiːmə/
dtd约束的缺点?
只能对标签、属性做这种粗粒度的约束;
但是不能对值做限定;
如何引入schema约束?
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
>
XML 解析
1.xml_解析_解析方式
1.1什么是DOM解析?
一次性的把文档的内容全部加载进内存,形成DOM树,可以完成增删改查四种操作;
缺点:
占用内存很大
1.2什么是SAX解析?
一次只读取一行,读完就释放,占用内存小;
确点:
只能读取;
2.解析_常见的解析器
DOM4J;
JSOUP;
1.1Jsoup_快速入门
使用jsoup的步骤?
1.导入jar包;
2.获取xml文件的路径;
3.获取Document对象;
4.通过Document对象获取Element对象;
5.通过Element对象获取它的内容;
1.2_Jsoup_Jsoup对象
parse(String html);
html:文档内容
parse(File file,String charset);
file:
xml文档对应的file对象
charset:
用哪种编码解析xml文档
parse(URL url,int timeOutMillis )
url:
xml文档的网络路径
timeOutMillis:
超时时间
1.2.1Jsoup_Document对象
Document常用方法?
Element getElementById(String id);
Elements getElementsByTag(String tagName);
Elements getElementsByAttribute(String attribute);
Elements getElementsByAttributeValue(String attribute,String value);
1.2.2Jsoup_Element对象
Element常用方法?
Element getElementById(String id);
Elements getElementsByTag(String tagName);
Elements getElementsByAttribute(String attribute);
Elements getElementsByAttributeValue(String attribute,String value);
attr(String key):获取某个属性的值;
text():只获取元素的文本内容
html():获取文本的标签体
1.3Jsoup_根据选择器查询
Elements select(String cssQuery);其中cssQuery应该怎么写?
基础选择器:
id选择器;
#id值
类选择器;
.类名
元素选择器;
元素名
高级选择器:
后代选择器;
选择器1 选择器2
子选择器;
选择器1 > 选择器2
并集选择器;
选择器1,选择器2
属性选择器;
元素名[属性名]
元素名[属性名=“属性值”]
伪类选择器;
元素名:状态
1.4Jsoup_根据Xpath查询(了解)
使用步骤?
1.导入xpath的jar包;
2.先构建jsoup的Document对象,根据这个Document对象,再构建JxDocument对象;
3.通过JxDocument获取JxNode;;
4.通过JxNode得到值;
public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
//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<JXNode> nodes = jxDocument.selN("//student");
JXNode stuNode = nodes.get(0);//heima_0001
// System.out.println(stuNode);
/*
//gender:
使用//可以定位到xml文档的根标签,然后在全文中检索名字为gender的标签(必须是当前结点的后代结点),
/gender:
找当前节点的儿子们,如果是名字是gender,就能找到。
*/
/*List<JXNode> genders = stuNode.sel("/gender");
System.out.println(genders);*/
/*List<JXNode> genders = stuNode.sel("//gender");
System.out.println(genders);*/
List<JXNode> genders = stuNode.sel("/age/name/gender");
System.out.println(genders);
}