DOM读取xml文件

第一次用这个DOM解析xml文件,搞了一个下午。为了搞清楚怎么读取xml的问题,查看了jdk的api也就那么回事。先看下xml文件

test.xml

 

 
 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <pets> 
  3.     <pet> 
  4.         <id>1</id> 
  5.         <name>dog</name> 
  6.         <master>jack</master> 
  7.         <love>50</love> 
  8.     </pet> 
  9.     <pet> 
  10.         <id>2</id> 
  11.         <name>cat</name> 
  12.         <master>rose</master> 
  13.         <love>70</love> 
  14.     </pet> 
  15. </pets> 

里面有四个属性,分别是宠物的id,名字,主人,爱心值。

再来个和xml对应的javabean,这样可以把东西都放到上面,然后供其他地方调用。

pet.java也是4个属性

 

 
 
  1. public class Pet { 
  2.  
  3.     private int id; 
  4.     private String name; 
  5.     private String master; 
  6.     private int love; 
  7.     public int getId() { 
  8.         return id; 
  9.     } 
  10.     public void setId(int id) { 
  11.         this.id = id; 
  12.     } 
  13.     public String getName() { 
  14.         return name; 
  15.     } 
  16.     public void setName(String name) { 
  17.         this.name = name; 
  18.     } 
  19.     public String getMaster() { 
  20.         return master; 
  21.     } 
  22.     public void setMaster(String master) { 
  23.         this.master = master; 
  24.     } 
  25.     public int getLove() { 
  26.         return love; 
  27.     } 
  28.     public void setLove(int love) { 
  29.         this.love = love; 
  30.     } 

这些都是次要的,最主要的是读取的方法具体看代码

 

 
 
  1. import java.io.*; 
  2. import java.util.*; 
  3. import javax.xml.parsers.*; 
  4. import org.w3c.dom.*; 
  5.  
  6. public class TestXml { 
  7.     public static void main(String[] args) throws Exception { 
  8.         ReadXML rxml = new ReadXML(); 
  9.         List<Pet> pets = rxml.showXML(); 
  10.         for (Pet p : pets) { 
  11.             System.out 
  12.                     .println(p.getMaster() + "的宠物叫:" + p.getName() + ",爱心值是:" + p.getLove() + "."); 
  13.         } 
  14.     } 
  15.  
  16. class ReadXML { 
  17.  
  18.     public List<Pet> showXML() throws Exception { 
  19.         // 解析工厂实例 
  20.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
  21.         // Dom解析器 
  22.         DocumentBuilder builder = factory.newDocumentBuilder(); 
  23.         // 解析器读取文件 
  24.         Document doc = builder.parse(new File("D:\\test.xml")); 
  25.         // 获取根节点 
  26.         Element root = doc.getDocumentElement(); 
  27.  
  28.         NodeList nodes = root.getElementsByTagName("pet"); 
  29.  
  30.         List<Pet> pets = new ArrayList<Pet>(); 
  31.  
  32.         if (nodes != null && nodes.getLength() > 0) { 
  33.             // 循环上面查出来的pet有多少个 
  34.             for (int i = 0; i < nodes.getLength(); i++) { 
  35.  
  36.                 Element petElement = (Element) nodes.item(i); 
  37.                 // 获取pet下面的所有节点 
  38.                 NodeList nn = petElement.getChildNodes(); 
  39.  
  40.                 Pet pet = new Pet(); 
  41.                 // 循环pet下面的子节点 
  42.                 for (int j = 0; j < nn.getLength(); j++) { 
  43.                     // 判断节点 
  44.                     if (nn.item(j).getNodeType() == Node.ELEMENT_NODE) { 
  45.                         if (nn.item(j).getNodeName().equals("id")) 
  46.                             pet.setId(Integer.parseInt(nn.item(j).getFirstChild().getNodeValue())); 
  47.                         if (nn.item(j).getNodeName().equals("name")) 
  48.                             pet.setName(nn.item(j).getFirstChild().getNodeValue()); 
  49.                         if (nn.item(j).getNodeName().equals("love")) 
  50.                             pet.setLove(Integer.parseInt(nn.item(j).getFirstChild().getNodeValue())); 
  51.                         if (nn.item(j).getNodeName().equals("master")) 
  52.                             pet.setMaster(nn.item(j).getFirstChild().getNodeValue()); 
  53.                     } 
  54.                 } 
  55.                 pets.add(pet); 
  56.             } 
  57.         } 
  58.         return pets; 
  59.     } 

由于那个test.xml是放在D盘的,所以取它的绝对路径。来看下效果图吧。

 

 

 PSJava的还有很多方法,SAX,JDOM,DOM4J都是可以的。

本文出自 “Just do it” 博客,请务必保留此出处http://davenzeng.blog.51cto.com/3896952/1168728

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值