练习 求指教

来源:2-3 使用 DOM 解析XML 文件的节点名和节点值

慕粉3291149

2016-06-06 11:44

package test;

import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Book {
	NamedNodeMap attrs;
	NodeList childNodes;
	public NamedNodeMap getAttrs() {
		return attrs;
	}
	public void setAttrs(NamedNodeMap attrs) {
		this.attrs = attrs;
	}
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append(childNodes.item(0).getNodeValue().split("")[1] + "<book ");
		for(int i=0;i<attrs.getLength();i++){
			Node attr = attrs.item(i);
			sb.append(attr.getNodeName() + "=\"" + attr.getNodeValue() + "\"");
		}
		sb.append(">");
		for(int i=0;i<childNodes.getLength();i++){
			Node child = childNodes.item(i);
			if(child.getNodeType()==Node.TEXT_NODE){
				sb.append(child.getNodeValue());
			}
			if(child.getNodeType()==Node.ELEMENT_NODE){
				sb.append("<" + child.getNodeName() + ">");
				sb.append(child.getFirstChild().getNodeValue());
				sb.append("</" + child.getNodeName() + ">");
			}
		}
		sb.append("</book>");
		return sb.toString();
	}
	public NodeList getChildNodes() {
		return childNodes;
	}
	public void setChildNodes(NodeList childNodes) {
		this.childNodes = childNodes;
	}
	
}

package test;

import java.io.IOException;
import java.util.ArrayList;
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Homework {

	public static void main(String[] args) {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document document = db.parse("books.xml");
			NodeList booklist = document.getElementsByTagName("book");
			List<Book> books = new ArrayList<Book>();
			for(int i=0;i<booklist.getLength();i++){
				Node book = booklist.item(i);
				NamedNodeMap attrs = book.getAttributes();
				Book newBook = new Book();
				newBook.setAttrs(attrs);
				NodeList childNodes = book.getChildNodes();
				newBook.setChildNodes(childNodes);
				books.add(newBook);
			}
			
			
			System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			System.out.println("<bookstore>");
			for(int i=0;i<books.size();i++){
				System.out.println(books.get(i));
			}
			System.out.println("</bookstore>");
			
			
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}


写回答 关注

1回答

  • jf2016
    2016-06-06 14:48:10
    已采纳

    请问你报的错是不是“找不到文件”?

    如果是,你的xml文件复制到你当前的项目(project)下了吗 

    我把你的代码复制到我本地eclipse运行了 我的xml文件名为book.xml运行了一下没问题

    慕粉3291...

    我的没问题 只是翔看看有没有更好的方法

    2016-06-06 17:21:22

    共 1 条回复 >

Java眼中的XML---文件读取

通过Java认识并且创造XML文件,如何应用 Java“解析 XML

83199 学习 · 431 问题

查看课程

相似问题