亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

導入老師的課件,一個字沒改,運行時出現各種異常,看不懂啊,求大神。

這是老師的代碼,是xml的DOM用法
package?com.imooc.domtest.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?DOMTest?{

	public?static?void?main(String[]?args)?{
		//創建一個DocumentBuilderFactory的對象
		DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance();
		//創建一個DocumentBuilder的對象
		try?{
			//創建DocumentBuilder對象
			DocumentBuilder?db?=?dbf.newDocumentBuilder();
			//通過DocumentBuilder對象的parser方法加載books.xml文件到當前項目下
			Document?document?=?db.parse("books.xml");
			//獲取所有book節點的集合
			NodeList?bookList?=?document.getElementsByTagName("book");
			//通過nodelist的getLength()方法可以獲取bookList的長度
			System.out.println("一共有"?+?bookList.getLength()?+?"本書");
			//遍歷每一個book節點
			for?(int?i?=?0;?i?<?bookList.getLength();?i++)?{
				System.out.println("=================下面開始遍歷第"?+?(i?+?1)?+?"本書的內容=================");
				//通過?item(i)方法?獲取一個book節點,nodelist的索引值從0開始
				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(index)方法獲取book節點的某一個屬性
					Node?attr?=?attrs.item(j);
					//獲取屬性名
					System.out.print("屬性名:"?+?attr.getNodeName());
					//獲取屬性值
					System.out.println("--屬性值"?+?attr.getNodeValue());
				}
//				//前提:已經知道book節點有且只能有1個id屬性
//				//將book節點進行強制類型轉換,轉換成Element類型
//				Element?book?=?(Element)?bookList.item(i);
//				//通過getAttribute("id")方法獲取屬性值
//				String?attrValue?=?book.getAttribute("id");
//				System.out.println("id屬性的屬性值為"?+?attrValue);
				//解析book節點的子節點
				NodeList?childNodes?=?book.getChildNodes();
				//遍歷childNodes獲取每個節點的節點名和節點值
				System.out.println("第"?+?(i+1)?+?"本書共有"?+?
				childNodes.getLength()?+?"個子節點");
				for?(int?k?=?0;?k?<?childNodes.getLength();?k++)?{
					//區分出text類型的node以及element類型的node
					if?(childNodes.item(k).getNodeType()?==?Node.ELEMENT_NODE)?{
						//獲取了element類型節點的節點名
						System.out.print("第"?+?(k?+?1)?+?"個節點的節點名:"?
						+?childNodes.item(k).getNodeName());
//						獲取了element類型節點的節點值
						System.out.println("--節點值是:"?+?childNodes.item(k).getFirstChild().getNodeValue());
//						System.out.println("--節點值是:"?+?childNodes.item(k).getTextContent());
					}
				}
				System.out.println("======================結束遍歷第"?+?(i?+?1)?+?"本書的內容=================");
			}
		}?catch?(ParserConfigurationException?e)?{
			e.printStackTrace();
		}??catch?(SAXException?e)?{
			e.printStackTrace();
		}?catch?(IOException?e)?{
			e.printStackTrace();
		}
		
	}
}
解析的文件內容是<?xml?version="1.0"?encoding="UTF-8"?>
<bookstore>
???????<book?id="1">
????????????????<name>冰與火之歌</name>
		<author>喬治馬丁</author>
		<year>2014</year>
		<price>89</price>
???????</book>

???<book?id="2">
???<name>安徒生童話</name>
		<year>2004</year>
		<price>77</price>
		<language>English</language>


</book>
</bookstore>

報錯信息:

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:701)

at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:567)

at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1793)

at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:503)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2719)

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:339)

at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)

at com.imooc.domtest.test.DOMTest.main(DOMTest.java:26)


正在回答

1 回答

我大概知道了,下載老師的課件,我的電腦自動把xml文件保存為ANSI編碼的了,改回utf-8就能用了

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

導入老師的課件,一個字沒改,運行時出現各種異常,看不懂啊,求大神。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號