Java处理XML的DOM方式2

package cn.rock.service;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import cn.rock.bean.Person;

public class DOMParseService2 {
 private List<Person> personList = null;
 

 /**
  * @param args
  */
 public void DOMParseXML() {
  personList = new ArrayList<Person>();
  
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  try {
   DocumentBuilder builder = factory.newDocumentBuilder();
   FileInputStream fileInputStream = new FileInputStream("E:\\Workspaces\\MyEclipse for Spring 8.6\\xml\\bin\\person.xml");
   Document document = builder.parse(fileInputStream);
   
   Element root = document.getDocumentElement();
   
   NodeList persons = root.getElementsByTagName("person");
   
   for(int i=0; i<persons.getLength(); i++){
    Node personNode = persons.item(i);
    if(personNode instanceof Element){
     Element personElement = (Element)personNode;
     Person person = new Person();
     person.setId(new Integer(personElement.getAttribute("id")));
     
     NodeList childNodes = personElement.getChildNodes();
     
     for(int y=0; y<childNodes.getLength(); y++){
      if(childNodes.item(y).getNodeType() == Node.ELEMENT_NODE){
       Element childElement = (Element)childNodes.item(y);
       if("name".equals(childElement.getTagName())){
        String name = childElement.getFirstChild().getNodeValue().trim();
        System.out.println("name: " + name);
        person.setName(name);
       }else if("age".equals(childElement.getTagName())){
        String age = childElement.getFirstChild().getNodeValue().trim();
        System.out.println("age: " + age);
        person.setAge(new Short(age));
       }else if("address".equals(childElement.getTagName())){
        String address = childElement.getFirstChild().getNodeValue().trim();
        System.out.println("address: " + address);
        person.setAddress(address);
       }
      }
     }
     personList.add(person);
     
     
//     System.out.println(personElement.getFirstChild());
//     System.out.println(personElement.getNextSibling());
//     for(Node childNode = personElement.getFirstChild(); childNode != null; childNode.getNextSibling()){
//      System.out.println(childNode.getNodeName() + "---" + childNode.getNodeValue() + "---" + childNode.getNodeType() );
//      if(childNode.getNodeType() == Node.ELEMENT_NODE){
//       System.out.println("---------------------");
//      }
//     }
    }
   }
   
   Iterator<Person> iter = personList.iterator();
   while(iter.hasNext()){
    Person person = iter.next();
    System.out.println(person.toString());
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 
 }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值