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):删除节点信息

 

posted on 2017-12-21 15:28  听风醉  阅读(215)  评论(0编辑  收藏  举报

导航

因为不可能,所以才值得相信。