1 XML标签:Extend Markup Language 可扩展标记语言
2 作为软件的配置文件,自定义标签,三大框架配置文件
3 浏览器解码 <?xml version="1.0" encoding="gbk"?>
4 原样输出:<_student id="1">student
<![CDATA[ <name>卡卡</name><name>蔻蔻</name> ]]>
</_student>
5 在一个xml文档中,只允许有且仅有一个根标签
6 xml解析方式
DOM解析:xml解析引擎一次性把整个xml文件加载进内存,在内存创建一颗document树。
问题:大文件的话,使用dom解析效率比较低,甚至会导致内存溢出。
编码方式: 面向对象编程方式
SAX解析:原理加载一点,读取一点,处理一点。优势:占用的内存比较小。
编程方式:基于事件编程方式。
7 使用dom4j读取xml的标签
SAXReader reader = new SAXReader();
Document doc = reader.read("contact.xml");
getRootElement(): 获取根标签
getName(): 获取标签名称
element("名称"): 获取第一个指定名称的子标签
elements("名称"): 获取指定名称的所有的子标签
elements(): 获取所有子标签
conElem.attributeValue("id")
conElem.attribute("id")
getText(): 获取标签的文本内容
8 使用dom4j写出xml
OutputFormat format = OutputFormat.createPrettyPrint()
XMLWriter writer = new XMLWriter(outStream,format );
format.setEncoding("gbk");
writer.write(doc);
9 修改xml
DocumentHelper.createDocument(); 添加文档对象
addElement(name)
addAttribute(name,value)
Attribute.setValue(value)
Element.addAttribute("name","value");
Element.setText(value)
Element.getParent().remove(elment)
Element.detach()
Attribute.getParent().remove(attri)
Attribute.detach()
10 在xml文件中,空格和换行会作为xml的内容被解析到。
11 XPath的作用
XPath主要是用于快速查找到XML文档中的节点的技术。
12
/ 绝对路径
// 相对路径
* 通配 选择所有元素
[ ] 条件 例如 /AAA/BBB[1] 选择第一个BBB子元素
@ 属性 选取属性
13 sax解析
SAXParser parser = SAXParserFactory.newInstance;
parser.parse(new File("contact.xml"), myHandler);
继承DefaultHandler
重写 startDocument()
startElement()
endElement()
characters()
14
| DOM解析 | SAX解析 |
原理 | 一次性加载进内存,构造docuemnt数,内存占用比较大 | 加载一点,读取一点,内存占用相对小 |
读取顺序 | 可以读取XML文件任意位置信息,甚至往回读 | 只能是从上往下依次读取,不能往回读 |
操作方式 | 可以进行查询,也可以进行修改 | 只能查询 |
编码方式 | 面向对象编程方式,更加适合java开发者 | 基于事件编程方式,相对java开发难理解 |
15 xml约束
DTD约束:相对简单的,数据类型简单的
场景:hibernate struts2
Schema约束:功能很强大,数据类型非常丰富。schema的出现时为了替代DTD的。