问答详情
源自:-

Node ge= gen.item(i);编译及运行错误。求大神指教。

import java.io.IOException;
import java.util.Collection;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Node;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class DomTest {

	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		// TODO Auto-generated method stub
//    错误:调用前没有new   DocumentBuilderFactory dbf=new DocumentBuilderFactory.newInstance(); 
		DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance(); //创建xml解析器,用newInstance方法创建实例
		DocumentBuilder db=dbf.newDocumentBuilder();//定义使可以从xml中获得document实例
		Document d= db.parse("haha.xml");//解析的放入document中,用w3.。。
		NodeList gen=d.getElementsByTagName("book");
		System.out.println("一共有"+gen.getLength()+"本书");
		for(int i=0;i<gen.getLength();i++){
			
			System.out.println(gen.item(i));
//			item为节点的元素。getAttributes();是得到该节点的属性集合
			Node ge=(Node) gen.item(i);	//运行异常,和老师写的不一样,老师写的是	Node ge= gen.item(i);这样写编译器会报错。
			NamedNodeMap att=ge.getAttributes();
			for(int j=0;j<att.getLength();j++){
				Node g=(Node)att.item(j);
				System.out.println(g);
				
			}
		}
		
		
	}

}

错误提示:

一共有2本书

Exception in thread "main" [book: null]

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredElementImpl cannot be cast to javax.xml.soap.Node

at xmlTest.DomTest.main(DomTest.java:32)


提问者:qq_梦飘雪_03155624 2016-04-18 22:18

个回答

  • 蛋蛋0423
    2018-06-01 09:18:28

    你这个是导入的包不对,import org.w3c.dom.Node;应该是这个,而不是你这个程序中的那个

    import javax.xml.soap.Node;