XML
数据储存语言:
特点:
与操作系统,编辑语言的开发平台无关,
实现不同系统之间的数据切换
作用:
数据交互
配置应用程序和网站
格式良好的XML文档:
1):所有XML元素都必须有结束标签
2):XML标签对大小写敏感
3):XML必须进行正确的嵌套
4):同级标签以缩进对齐
5):元素名称可以包含字母,数字,或其他字符
6):元素名称不能以数字或者标点符号打头
7):元素中不能包含空格
8):属性值用双引号
9):标签必须成对出现,有开始就有结束.
如果特殊符号过多,使用下列格式
< ![CDATA[
要显示的字符
]]>
DOM解析XML文档
DOM把XML文档映射成一个倒挂的树
DOM解析包 :org.w3c.dom
Document:表示整个XML文档 相当于dom树
常用方法:
NodeList getElementsByTagName(String Tag); 返回文档中指定名称所有元素的集合
Element createElement(String tagName); 创建指定标记名称的元素(添加一个节点)
Node 该文档树的单个节点
常用方法:
NodeList getChildNodes(); 获取该元素的所有子节点的的集合
Element:XML文档中的一个元素
常用方法:
String getTagName(); 获得元素名称
实现步骤:
1):得到DOM解析器工厂实例
DocumentBuilderFactory factory
= DocumentBuilderFactory.newInstance()
2):从DOM工厂获得DOM解析器
DocumentBuider buider = factory.newDocumentBuilder()
3):解析XML文档的输入流,得到一个Document
Document doc=buider.parse("xml文件位置");
解析XML文档:
1):使用Document对象的getElementsByTagName()方法,我们可以得到一个NodeList对象
获取所有books(DOM树根节点的第一个子节点的)品牌标签
NodeList list = doc.getElementsByTagName("品牌标签名");
2):使用NodeList对象的item()方法来得到列表中的每一个Node对象 XML文档的根节点
for (int i = 0; i < list.getLength(); i++) {
3):获取列表的每一个元素
Node de = list.item(i);
4):获取当前节点指定标签的值
Element let = (Element) de;
String str = let.getAttribute("name");
5):获得当前节点的所有子节点
NodeList nodeList = let.getChildNodes();
6):遍历所有的子节点Node对象
for (int j = 0; j < nodeList.getLength(); j++) {
//拿到列表的每一个元素
Node node = nodeList.item(j);
//判断当前Node是一个Element,则进行转换
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element ele = (Element) node;
//获取此ele的name属性值
String strs = ele.getAttribute("name");
System.out.println("手机:" + str + "\t型号:" + strs);
}
}
7):
保存XML文件
步骤:
1):创建TransformerFactory对象. 转换工厂的实例
TransformerFac工厂实例 = TransformerFactory.newInstance();
2):通过转换工厂实例获得Transformer对象. 获取转换器
Transformer 转换器对象 = 工厂实例 .newTransformer();
3):创建DOMSource对象 使用转换器将DOM树转换成xml文件
//创建源
Source xmlSource = new DOMSource(“DOM树对象”);
4):设置输出属性
编码格式(编码格式必须跟DOM的解码格式一样,否则出现乱码)
设置转换器的编码格式(设置转换器的第一个参数可设置为:"{http://xyz.foo.com/yada/baz.html}foo"或者OutputKeys.ENCODING.)
转换器对象.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
5):创建StreamResult对象
包含保存文件的信息
//创建目标
Result outputTarget = new StreamResult(“文件保存路径”);
6):将XML保存到指定文件中
转换器对象.transform(xmlSource, outputTarget);//此处有异常
添加DOM节点
步骤:
1):创建一个XXX节点
设置元素名,值
2):创建一个yyy节点
设置元素名,值
3):将yyy节点设置为XXX的子节点
4):找到AAA(根节点)的位置,然后将XXX节点挂到DOM树上
更改标签
实现步骤:
1):获得需要修改的标签
2):调用setAttribute(“属性名”,”属性值”)方法修改属性
删除某一个节点
实现步骤:
1):.getElementsByTagName(String name)获取标签列表.
2):获取需要删除的节点值为XXX的标签对象.
3):通过getParentNode(方法获取父节点对象).
4):调用父节点的removeChid()方法删除节点
使用DOM4J解析DOM文档
使用DOM4J解析XML文档,需要先下载DOM4j包然后加入工程就可以使用了
把下载好的dom4j包放到程序所在文件夹的根目录
找到DOM4J.jar 添加进工程
操作方法非的详细过程:
1):加载DOM树结构
2):遍历DOM树
3):保存DOM树到指定XML文件
4):添加节点
5):修改节点
6):删除节点信息