代碼運(yùn)行出現(xiàn)問題
package com.imooc.domtest;
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.NodeList;
import org.xml.sax.SAXException;
/*
?* 應(yīng)用DOM方式解析books.xml文件
?*/
public class Domtest {
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??????? //創(chuàng)建一個(gè)DocumentBuilderFactory對(duì)象
??DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();//新的 DocumentBuilder 實(shí)例
??try {
???//創(chuàng)建DocumentBuilder對(duì)象
???DocumentBuilder db=dbf.newDocumentBuilder();
???//通過DocumentBuilder對(duì)象的parse方法加載Books.xml文件到當(dāng)前項(xiàng)目下
????? Document document= db.parse("books.xml");
????? //獲取所有book 節(jié)點(diǎn)
???? NodeList booklist= document.getElementsByTagName("book");
???? System.out.println("一共有"+booklist.getLength()+"本書");
???? //遍歷每個(gè)book節(jié)點(diǎn)
???? //for(int i=0;i<booklist.getLength();i++){
??????
??} 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();
??}
?}??
}
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
?????? <book?? id="1">
??????????????? <name>老人與海</name>
??????????????? <author>海明威</author>
??????????????? <year>2015</year>??????
??????????????? <price>67</price>
?????? </book>
???????
?????? <book?? id="2">
??????????????? <name>看見</name>
??????????????? <language>chinese</language>
??????????????? <author>柴靜</author>
??????????????? <year>2014</year>??????
??????????????? <price>87</price>
?????? </book>??????????
</bookstore>
錯(cuò)誤:
[Fatal Error] books.xml:2:6: 不允許有匹配 "[xX][mM][lL]" 的處理指令目標(biāo)。
org.xml.sax.SAXParseException; systemId: file:///E:/Users/kexin/workspace/DomTest/books.xml; lineNumber: 2; columnNumber: 6; 不允許有匹配 "[xX][mM][lL]" 的處理指令目標(biāo)。
?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.domtest.Domtest.main(Domtest.java:26)
2016-07-27
不過我發(fā)現(xiàn)如果我把?Document document= db.parse("books.xml");文件的路徑改成Document document= db.parse("f:\\books.xml");運(yùn)行就正確了。同時(shí)要注意xml文件保存時(shí)要以UTF-8編碼保存。