码迷,mamicode.com
首页 > 其他好文 > 详细

使用JAXP对xml文档进行DOM解析

时间:2014-10-29 14:19:15      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   for   sp   strong   

book.xml:
 1 <?xml version="1.0" encoding= "UTF-8" standalone ="no"?>
 2 <书架>
 3       <>
 4              <书名>霍乱时期的爱情 </书名>
 5              <作者>加西亚 马尔克斯 </作者>
 6              <价格>30.00 </价格>         
 7       </>
 8       <>
 9              <书名>生命中不能承受之轻 </书名>
10              <作者>米兰 昆德拉 </作者>
11              <价格>40.00 </价格>
12       </>
13 </书架>
1.获取xml文件中:<书名>霍乱时期的爱情</书名>的书名:霍乱时期的爱情
 1        @Test
 2        public void test1() throws Exception {
 3             // 1.得到解析工厂
 4             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 5             // 2.得到DOM解析器
 6             DocumentBuilder builder = factory.newDocumentBuilder();
 7             // 3.解析xml文档,得到代表文档的document
 8             Document document = builder.parse( "src/book.xml");
 9             
10             Element bookname = (Element ) document.getElementsByTagName("书名" ).item(0);
11             String str = bookname.getTextContent();
12             System. out.println(str);
13       }
测试结果】:
霍乱时期的爱情
 
2.在 xml文件中添加出版社<出版社></出版社>
 1        @Test
 2        public void test2() throws Exception {
 3             Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( "src/book.xml");
 4             
 5              // 获取指定的父节点
 6             Element bookname = (Element) document.getElementsByTagName("书" ).item(0);
 7              // 创建节点
 8             Element press = document.createElement( "出版社" );
 9             press.setTextContent( "中信出版社" );
10             
11              // 将节点添加到<书>
12             bookname.appendChild(press);
13             
14              // 将内存中写入到 xml文档
15             TransformerFactory tfFacotry = TransformerFactory.newInstance();
16             Transformer tf = tfFacotry.newTransformer();
17             tf.transform( new DOMSource(document), new StreamResult( newFileOutputStream("src/book.xml" )));
18       }
【测试结果】:
 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
 2     <>
 3         <书名>霍乱时期的爱情</书名>
 4         <作者>加西亚 马尔克斯</作者>
 5         <价格>30.00</价格>
 6         <出版社>中信出版社</出版社>
 7     </>
 8     <>
 9         <书名>生命中不能承受之轻</书名>
10         <作者>米兰 昆德拉</作者>
11         <价格>40.00</价格>
12     </>
13 </书架> 
 
3.添加一本书,书名:《挪威的森林》  作者:村上春树 国家:日本
 1        @Test
 2        public void test3() throws Exception {
 3             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 4             DocumentBuilder builder = factory.newDocumentBuilder();
 5             Document document = builder.parse( "src/book.xml");
 6             
 7             Element bookCase = (Element) document.getElementsByTagName("书架" ).item(0);
 8             
 9              // 创建<书名>节点
10             Element bookname = document.createElement( "书名" );
11             bookname.setTextContent( "挪威的森林" );
12              // 创建<作者>节点
13             Element author = document.createElement( "作者" );
14             author.setTextContent( "村上春树" );
15              // 创建<国籍>节点
16             Element nationality = document.createElement( "国籍" );
17             nationality.setTextContent( "日本" );
18             
19              // 获取书节点
20             Element book = document.createElement( "书");
21             book.appendChild(bookname);
22             book.appendChild(author);
23             book.appendChild(nationality);
24             
25             bookCase.appendChild(book);
26             
27              // 将内存写入到 xml文档
28             TransformerFactory tfFactory = TransformerFactory.newInstance();
29             Transformer tf = tfFactory.newTransformer();
30             tf.transform( new DOMSource(document), new StreamResult( newFileOutputStream("src/book.xml" )));
31       }
【测试结果】:
 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
 2     <>
 3         <书名>霍乱时期的爱情</书名>
 4         <作者>加西亚 马尔克斯</作者>
 5         <价格>30.00</价格>
 6     </>
 7     <>
 8         <书名>生命中不能承受之轻</书名>
 9         <作者>米兰 昆德拉</作者>
10         <价格>40.00</价格>
11     </>
12     <>        
13         <书名>挪威的森林</书名>
14         <作者>村上春树</作者>
15         <国籍>日本</国籍>
16     </>
17 </书架>
 
4.xml文档中为<书名>挪威的森林</书名>添加属性:type=" testimonial"
 1        @Test
 2        public void test4() throws Exception {
 3              // 获取xml 文档
 4             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 5             DocumentBuilder builder = factory.newDocumentBuilder();
 6             Document document = builder.parse( "src/book.xml");
 7             
 8              // 获取指定的节点
 9             Element bookname = (Element) document.getElementsByTagName("书名" ).item(1);
10             bookname.setAttribute( "type", "testimonial");
11             
12              // 将内存写回到 xml文档
13             TransformerFactory tfFactory = TransformerFactory.newInstance();
14             Transformer tf = tfFactory.newTransformer();
15             tf.transform( new DOMSource(document), new StreamResult( newFileOutputStream("src/book.xml" )));
16       }
【测试结果】:
 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
 2     <>
 3         <书名>霍乱时期的爱情</书名>
 4         <作者>加西亚 马尔克斯</作者>
 5         <价格>30.00</价格>
 6     </>
 7     <>
 8         <书名 type="testimonial">生命中不能承受之轻</书名>
 9         <作者>米兰 昆德拉</作者>
10         <价格>40.00</价格>
11     </>
12     <>        
13         <书名>挪威的森林</书名>
14         <作者>村上春树</作者>
15         <国籍>日本</国籍>
16     </>
17 </书架>
 
5.删除指定的节点:
 1 // 
 2     @Test 
 3     public void delete() throws Exception {
 4         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 5         DocumentBuilder builder = factory.newDocumentBuilder();
 6         Document document = builder.parse("src/book.xml");
 7         
 8         // 得到需要删除的节点
 9         Element e = (Element) document.getElementsByTagName("价格").item(0);
10         
11         // 得到要删除节点的父节点
12         Element book = (Element) document.getElementsByTagName("书").item(0);
13         
14         book.removeChild(e);
15         
16         // 将内存写回到xml文档
17         TransformerFactory tfFactory = TransformerFactory.newInstance();
18         Transformer tf = tfFactory.newTransformer();
19         tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/book.xml")));
20     }
【测试结果】:
 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
 2     <>
 3         <书名>霍乱时期的爱情</书名>
 4         <作者>加西亚 马尔克斯</作者>
 5         
 6     </>
 7     <>
 8         <书名>生命中不能承受之轻</书名>
 9         <作者>米兰 昆德拉</作者>
10         <价格>40.00</价格>
11     </>
12     <>        
13         <书名>挪威的森林</书名>
14         <作者>村上春树</作者>
15         <国籍>日本</国籍>
16     </>
17 </书架>

 

 

使用JAXP对xml文档进行DOM解析

标签:style   blog   io   color   ar   使用   for   sp   strong   

原文地址:http://www.cnblogs.com/xzgc/p/4059166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!