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)