返回顶部

收藏

Java XML DOM解析范例代码

更多
import java.io.InputStream;  
import java.util.ArrayList;  
import java.util.List;  

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

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

import com.xtlh.cn.entity.Book;  

public class DomParseService {  
    public List<Book> getBooks(InputStream inputStream) throws Exception{  
        List<Book> list = new ArrayList<Book>();  
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse(inputStream);  
        Element element = document.getDocumentElement();  

        NodeList bookNodes = element.getElementsByTagName("book");  
        for(int i=0;i<bookNodes.getLength();i++){  
            Element bookElement = (Element) bookNodes.item(i);  
            Book book = new Book();  
            book.setId(Integer.parseInt(bookElement.getAttribute("id")));  
            NodeList childNodes = bookElement.getChildNodes();  
//          System.out.println("*****"+childNodes.getLength());  
            for(int j=0;j<childNodes.getLength();j++){  
                if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){  
                    if("name".equals(childNodes.item(j).getNodeName())){  
                        book.setName(childNodes.item(j).getFirstChild().getNodeValue());  
                    }else if("price".equals(childNodes.item(j).getNodeName())){  
                        book.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));  
                    }  
                }  
            }//end for j  
            list.add(book);  
        }//end for i  
        return list;  
    }  
}  

public class Book {  
    private int id;  
    private String name;  
    private float price;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public float getPrice() {  
        return price;  
    }  
    public void setPrice(float price) {  
        this.price = price;  
    }  
    @Override 
    public String toString(){  
        return this.id+":"+this.name+":"+this.price;  
    }  
}  

public class ParseTest extends TestCase{  

    public void testDom() throws Exception{  
        InputStream input = this.getClass().getClassLoader().getResourceAsStream("book.xml");  
        DomParseService dom = new DomParseService();  
        List<Book> books = dom.getBooks(input);  
        for(Book book : books){  
            System.out.println(book.toString());  
        }  
    }  
}

                                xml文件描述:
 <?xml version="1.0" encoding="UTF-8"?> 
<books> 
<book id="12"> 
<name>thinking in java</name> 
<price>85.5</price> 
</book> 
<book id="15"> 
<name>Spring in Action</name>
 <price>39.0</price> 
</book> 
</books>

标签:xml,dom,dom解析,Java

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 刘莉莉 发表 2016-03-11 17:01:48 富文本存储型XSS的模糊测试之道
  2. 冷乐 发表 2015-07-04 08:29:21 使用JAXB类库实现JAVA对象与XML互转
  3. 尖兵 发表 2015-12-16 16:49:38 伪随机数的妙用
  4. Harries 发表 2016-02-21 15:58:05 JVM系列之JVM体系(一)
  5. C1G 发表 2014-12-09 06:58:45 用js创建隐藏来源不带referer的超链接
  6. 小丁 发表 2015-12-13 13:56:23 CSS-页面滑屏滚动原理
  7. 刘莉莉 发表 2016-02-21 14:16:56 java并发库–锁
  8. 刘莉莉 发表 2016-06-19 15:46:56 React + Redux 入门(一):抛开 React 学 Redux
  9. 360weboy 发表 2013-01-10 13:14:14 使用PHP的Dom生成xml文件
  10. 尖兵 发表 2016-03-05 15:01:13 Spring Boot工程结构推荐
  11. xiaoli.he 发表 2018-05-06 14:46:29 并发编程之 ConcurrentHashMap(JDK 1.8) putVal 源码分析
  12. sulong 发表 2007-12-05 14:50:26 对使用annotation的一些反思

发表评论