问答详情
源自:2-3 使用 DOM 解析XML 文件的节点名和节点值

只知道有books.xml文件

如果我只知道有books.xml文件 我怎么知道下面有bookstore这个节点 然后又怎么得到下面的两个book节点呢 不知道的情况下

提问者:差三岁4185231 2016-12-18 01:34

个回答

  • weibo_肖邦在对我微笑_0
    2016-12-18 15:43:13

    package com.javatoxml.dom4jtest;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    import com.javatoxml.entiry.Book;
    
    public class DOM4JTest {
    //	private static Book bookEntiry ;
    	private static ArrayList<Book> booksList = new ArrayList<Book>();
    
    	public static void main(String[] args) {
    		//创建SAXReader对象
    		SAXReader reader = new SAXReader();
    		//通过reader方法加载books.xml文件
    		try {
    			Document document = reader.read(new File("src/res/books.xml"));
    			//通过document对象获取根节点bookStore
    			Element bookStore = document.getRootElement();
    			//通过element对象的elementIterator方法获取迭代器
    			Iterator it = bookStore.elementIterator();
    			//历遍迭代器,获取根节点中的信息
    			while (it.hasNext()) {
    				Book bookEntiry = new Book();
    				Element book = (Element)it.next();
    				//获取book的属性名以及属性值
    				List<Attribute> bookAttrs = book.attributes();
    				for (Attribute attr : bookAttrs) {
    					System.out.println("属性名:" + attr.getName() + "---属性值:" + attr.getValue());
    					bookEntiry.setId(attr.getValue());
    				}
    				Iterator itt = book.elementIterator();
    				while (itt.hasNext()) {
    					Element bookChild = (Element) itt.next();
    					System.out.println("节点名:" + bookChild.getName() + "---节点值:" + bookChild.getStringValue());
    					if (bookChild.getName().equals("name")) {
    						bookEntiry.setName(bookChild.getStringValue());
    					} else if (bookChild.getName().equals("author")){
    						bookEntiry.setAuthor(bookChild.getStringValue());
    					} else if (bookChild.getName().equals("year")) {
    						bookEntiry.setYear(bookChild.getStringValue());
    					} else if (bookChild.getName().equals("price")) {
    						bookEntiry.setPrice(bookChild.getStringValue());
    					} else if (bookChild.getName().equals("language")) {
    						bookEntiry.setLanguage(bookChild.getStringValue());
    					}
    					
    				}
    				booksList.add(bookEntiry);
    				System.out.println(booksList.size());
    				
    				bookEntiry = null;
    			}
    			for (Book books : booksList) {
    				System.out.println(books.getId());
    				System.out.println(books.getName());
    				System.out.println(books.getAuthor());
    				System.out.println(books.getYear());
    				System.out.println(books.getPrice());
    				System.out.println(books.getLanguage());
    				System.out.println("------finishi-----");
    			}
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    
    }
    //在接下来学习DOM4J解析中你能找到答案,代码注释已经写的很清楚了