使用DOM解析XML

来源:互联网 发布:合肥it 编辑:程序博客网 时间:2024/06/01 08:51
DOM(Document Object Model,文档对象模型)是w3c定义的一套规范标准,规定了解析文档的接口。DOM规范中所指的文档比较广泛,包括XML文件和HTML文件。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。具体示例如下:

DOM解析器的代码:

public class DomXmlParser implements XmlParse {    public static void main(String[] args) {        DomXmlParser parser = new DomXmlParser();        List<Book> bookList = parser.parseXml("books.xml");        for(Book book:bookList){            System.out.println(book);        }    }    @Override    public  List<Book> parseXml(String fileName) {        List<Book> bookList = new ArrayList<Book>();        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        Document document = null;        try {            DocumentBuilder documentBuilder = factory.newDocumentBuilder();            document = documentBuilder.parse(new File(fileName));        } catch (ParserConfigurationException e) {            e.printStackTrace();        } catch (SAXException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        Node rootNode = document.getDocumentElement();// 获得整体的树状结构的根节点        NodeList bookNodeList = rootNode.getChildNodes();// 获得子节点(Book节点)        for (int i = 0; i < bookNodeList.getLength(); i++) {            Node bookItem = bookNodeList.item(i);// 获得单个Book节点            if (bookItem.getNodeName().equals("book")) {                Book book = new Book();                NamedNodeMap map = bookItem.getAttributes();                Node namedItem = map.getNamedItem("bookno");                String bookNoValue = namedItem.getNodeValue();                book.setBookNo(bookNoValue);                NodeList childNodesList = bookItem.getChildNodes();                for (int j = 0; j < childNodesList.getLength(); j++) {                    Node node = childNodesList.item(j);                    String str = node.getNodeName();                    if (str.equals("title")) {                        book.setName(node.getTextContent().trim());                    } else if (str.equals("price")) {                        book.setPrice(Integer.parseInt(node.getTextContent().trim()));                    }else if (str.equals("author")) {                        book.setAuthor(node.getTextContent().trim());                    }                }                bookList.add(book);            }        }        return bookList;    }}
book.xml代码:``<?xml version="1.0" encoding="utf-8"?><books>    <book bookno="001">        <title>Java设计</title>        <price>80</price>        <author>张三</author>    </book>    <book bookno="002">        <title>android设计</title>        <price>100</price>        <author>李四</author>    </book></books>

Book类代码:

public class Book {    private String name;    private String author;    private int price;    private String bookNo;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public int getPrice() {        return price;    }    public void setPrice(int price) {        this.price = price;    }    public Book() {        super();    }    public String getBookNo() {        return bookNo;    }    public void setBookNo(String bookNo) {        this.bookNo = bookNo;    }    public Book(String name, String author, int price, String bookNo) {        super();        this.name = name;        this.author = author;        this.price = price;        this.bookNo = bookNo;    }    @Override    public String toString() {        return "Book [name=" + name + ", author=" + author + ", price=" + price                + ", bookNo=" + bookNo + "]";    }   }
0 0
原创粉丝点击