xml解析之Dom

最近在研究xml解析方式,觉得几种方法都还可以!今天把他记下来与大家分享一下!代码是自己写的!过程中有错误的话!还望指正!

public static void main(String[] arrs){

    InputStream inputStream = this.getClass.getClassLoad.getResourceAsStream("context.xml");   //得到inputStream

    List<Person> perList = new ArrayList<Person>();
    Person person = null;

 

 //得到文档构建器工厂,用来产生文档构建器
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  

   

//通过工厂得到构建器

   DocumentBuilder dBuilder  = dbf.newDocumentBuilder();            

   

//把inputStream 通过构建器进行解析,得到document对象

  Document document =dBuilder.parse(inputStream);

                     

Element element =document.getDocumentElement();  //得到根节点

 


  NodeList childNodeList =element.getElementsByTagName("person");  //得到所有的person 节点对象

  
  for (int i = 0; i < childNodeList.getLength(); i++) {
     person = new Person();

    //得到单个person 节点对象
     Element persoNode =(Element)childNodeList.item(i);

     //获取节点属性
     person.setId(Integer.valueOf(persoNode.getAttribute("id")));

     //得到所有节点下面的所有子节点
     for (int j = 0; j < persoNode.getChildNodes().getLength(); j++) {

           //得到子节点  并设置值
         Node ccElement =  persoNode.getChildNodes().item(j);

         if (ccElement.getNodeName().equals("name")) {

              //得到子节点中的文本
              person.setName(ccElement.getFirstChild().getNodeValue());
          }
          if (ccElement.getNodeName().equals("age")) {

             //同上
              person.setAge(Integer.valueOf(ccElement.getFirstChild().getNodeValue()));
           }
      }
       perList.add(person);
  }

 

for(Person person:perList){

   System.out.println(person.toString());

}

}

 

 

/*******************context.xml************************/

<?xml version='1.0' encoding='utf-8'?>
<persons>
 <person id='20'>
  <name>xx</name>
  <age>33</age>
 </person>
 <person id='30'>
  <name>dd</name>
  <age>33</age>
 </person>
 <person id='40'>
  <name>aa</name>
  <age>33</age>
 </person>
</persons>

 

简单把 !!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值