运行程序报错。。
完整代码如下:
package com.imooc.dmtest.test;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMETest {
public static void main(String[] args) {
// TODO Auto-generated method stub
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
try{
DocumentBuilder db=dbf.newDocumentBuilder();
Document document=db.parse("books.xml");
NodeList bookList=document.getElementsByTagName("book");
System.out.println(bookList.getLength()+"本书");
for(int i=0;i<bookList.getLength();i++)
{
// Node book=bookList.item(i);
// NamedNodeMap attrs=book.getAttributes();
// System.out.println("第i+1本书"+attrs.getLength()+"属性");
// for(int j=0;j<attrs.getLength();j++)
// {
// Node attr=attrs.item(j);
// System.out.println("属性名"+attr.getNodeName());
//
// System.out.println("属性值"+attr.getNodeType());
//
// }
Element book=(Element) bookList.item(i);
String attrValue=book.getAttribute("id");
System.out.println("id属性的属性值为"+attrValue);
}
}catch(ParserConfigurationException e){
e.printStackTrace();
}catch(SAXException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
错误提示如下:
[Fatal Error] books.xml:1:37: 应该有伪属性名。
org.xml.sax.SAXParseException; systemId: file:///D:/%E6%90%9C%E7%8B%97%E9%AB%98%E9%80%9F%E4%B8%8B%E8%BD%BD/eclipse442win32/DOMETest/books.xml; lineNumber: 1; columnNumber: 37; 应该有伪属性名。
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)
at com.imooc.dmtest.test.DOMETest.main(DOMETest.java:24)
不清楚是怎么回事?
还有那个books.xml文件里的是文字都是无法显示的,但是就是utf-8的???