1.文档类型定义
<!DOCTYPE demo SYSTEM "demo.dtd">
约束 指定XXX出现个数、次序
有点像接口 定义规则 你定义规则 我就能跑你的方法
2.文档注释
<!-- -->不能嵌套
3.文档主体内容:
顶层元素包括:
各种子元素
元素属性
元素文本
CDATA(character data )不让XML解析,保证数据原样性
4.将描述的事物描述成对象
5.定义功能的时候,就想的差不多了,把想法变成注释然后才编码
6.Ctrl+M 窗口最大化
7.Fast Looping
遍历整篇文档
8.用图形化界面解析XML
9.增加节点:
a.创建文档Document DocumentHelper
b.根节点
c.子节点 属性
10. addXXX
adXML
方法调用链 一直点下去 看清楚它的返回值 返回值的父子关系
这种方法调用链 有点像StringBuffer.append().append()
11.将符合格式的字符串 转换成 XML
<students><student>.........<student></students>
documentHelper.parseTest()
12.element.add(Node node);
1.只能添加根节点的 不能添加子节点
在根节点中嵌套字节点
2.List element
想一下它的底层原理,看源文件
13.clone java.lang.Object
14.移除 remove()
删除某个所有的属性节点
15.更新
16.asXML
parseText
17.XMLWriter 用完流之后关闭
18.从一个.xml读入 写入到新的.xml
OutputFormat encoding默认是UTF-8
汉字 乱码
OutputStreamWriter 指定编码
用字节流是最简便的 不会出现乱码
format.setEncoding() 会改变编码头 不提倡
document.getXMLEncoding()
format.setEncoding() 设定编码为源文档的编码
19.思路:
a.FileWriter 指定的是它默认的编码(UTF-8)
FileWriter不能指定编码 要通过OutputStreamWriter 转换流
转换流中 构造方法 传入编码
b.format.setEncoding 这是我知道他的编码是什么,就设置什么 --> 但要是不知道了?
document.getXMLEncoding()
format.setEncoding() 设定编码为源文档的编码
c.用字节流 原样 写 指定format
20.写自己创建的document 还在内存中
把它写出去
21.目的:
既要保证汉字不乱码 又要保证编码头和原来的一样
22.XPath
通过元素和属性查找
YYY/students/student document/.... YYY可以任意
XXX.students/student XXX/students/student
//name 得到所有name元素 不考虑位置 相比上面的而言 它不用层层拔皮
student//name student目录下的所有name元素 rootElement/student
//@id 获取所有id的属性对象 --->Attribute
//student[@id] --->Element
//student[@id='001']
//student[age>20]
selectNodes()
selectSingleNode()
//student[property[@name='id']="+id+"]
<student><property name="id">002</property></student>
23.规律:
可以找元素 属性
标签[]
属性@ =
//...[...] //先后面是什么,返回就是什么
24.功能函数:
a.功能是什么 ---> 函数名
b.这个功能函数可以得到什么 --> 返回值
c.在这个函数运行中,有没有未知参数参与运算 -->参数
25.指定义异常 继承 RuntimeException 就不用 throws 因为 throws了也没作用
一旦出现问题 就停掉了
但是继承Exception的话,还得抛
26.后期,一个文件 改变了以后 就得写入它中
再次加载的时候就是新的了
27.练习:
传入 id name
获取到XXX的所有信息
面向对象 封装成工具类 XPath XML作为承载数据