XML基础
1)XML的作用
1.1作为软件配置文件
1.2作为小型的“数据库”
2)XML语法(由w3c组织规定的)
标签:
标签名不能以数字开头,中间不能有空格,区分大小写。有且仅有一个根标签。
属性:
可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单双混用。
文档声明:
encoding="utf-8": 打开或解析xml文档时的编码
注意:
保存xml文档时的编码 和 解析xml文档时的编码要保持一致,才能避免中文乱码问题!
3)XML解析
程序读取或操作xml文档
两种解析方式:DOM解析vs SAX解析
DOM解析原理:一次性把xml文档加载成Document树,通过Document对象得到节点对象,通过节点对象访问xml文档内容(标签,属性,文本,注释)。
Dom4j工具(基于DOM解析原理):
读取xml文档:
Document doc = new SAXReader().read("xml文件");
节点:
nodeIterator();所有节点
标签:
element("名称")指定名称的第一个子标签对象
elementIterator("名称");指定名称的所有子标签对象
elements();所有子标签对象
属性:
attributeValue(“名称”) 指定名称的属性值
attribute("名称")指定名称的属性对象
getName()属性名称
getValue() 属性值
atributeIterator()所有属性对象(Iterator)
attributes()所有属性对象(List)
文本:
getText() 得到当前标签的文本
elementText("子标签名称")得到子标签的文本
今天的目标:Dom4J修改xml + xPath技术+ SAX解析+ XML约束
2 Dom4j修改xml文档
2.1写出内容到xml文档
XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
wirter.write(Document);
2.2修改xml文档的API
增加:
DocumentHelper.createDocument()增加文档
addElement("名称")增加标签
addAttribute("名称",“值”)增加属性
修改:
Attribute.setValue("值")修改属性值
Element.addAtribute("同名的属性名","值")修改同名的属性值
Element.setText("内容")修改文本内容
删除
Element.detach();删除标签
Attribute.detach();删除属性
3 xPath技术
3.1引入
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!
3.2 xPath作用
主要是用于快速获取所需的节点对象。
3.3在dom4j中如何使用xPath技术
1)导入xPath支持jar包 。jaxen-1.1-beta-6.jar
2)使用xpath方法
List selectNodes("xpath表达式");查询多个节点对象
Node selectSingleNode("xpath表达式");查询一个节点对象
3.4 xPath语法
/绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
//相对路径 表示不分任何层次结构的选择元素。
*通配符 表示匹配所有元素
[]条件 表示选择什么条件下的元素
@属性 表示选择属性节点
and关系表示条件的与关系(等价于&&)
text()文本 表示选择文本内容