代碼運行問題
package com.imooc.dmtest.test;
import java.io.*;
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 DOMTest {
public static void main(String[] args){
// 創建一個DocumentBuilderFactory的對象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//創建一個DocumentBuilder對象
try {
DocumentBuilder db=dbf.newDocumentBuilder();
//通過DocumentBuilder對象的parse方法加載bookstore.xml文件到當前項目下
Document document=db.parse("bookstore.xml");
//獲取所有book的節點
NodeList bookList=document.getElementsByTagName("book");
//通過nodeList中的getLength()方法獲取book的長度
System.out.println("一共有:"+bookList.getLength()+"本書");
//遍歷每一個book節點
for(int i=0;i<bookList.getLength();i++){
System.out.println("=========下面開始遍歷第"+(i+1)+"本書的內容=========");
//通過bookList.item()方法獲取每一個節點
Node book=bookList.item(i);
//獲取book節點所有屬性集合
NamedNodeMap attrs=book.getAttributes();
System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性");
//遍歷book的屬性
for(int j=0;j<attrs.getLength();j++){
//通過item(i)方法獲取book節點的某一個屬性
Node attr=attrs.item(j);
//獲取屬性名
System.out.print("屬性名:"+attr.getNodeName());
//獲取屬性值
System.out.println("--屬性值:"+attr.getNodeValue());
}
System.out.println("=========結束遍歷第"+(i+1)+"本書的內容=========");
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
代碼是按照老師講的敲上去的,運行結果如下:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字節的 UTF-8 序列的字節 1 無效。
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:687)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:557)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1753)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:497)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2710)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)
at com.imooc.dmtest.test.DOMTest.main(DOMTest.java:24)
有沒有遇到相同問題,并且解決的同學?
2016-12-02
你books.xml中的內容對不對
2016-12-03
把那個UTF-8改成gbk就可以了