第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么生成不了book,name這些節(jié)點(diǎn)?執(zhí)行后只有bookstore

package?SAX;
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.util.ArrayList;
import?handler.SaxParserHandler;
import?javax.naming.spi.DirStateFactory.Result;
import?javax.xml.parsers.ParserConfigurationException;
import?javax.xml.parsers.SAXParser;
import?javax.xml.parsers.SAXParserFactory;
import?javax.xml.transform.OutputKeys;
import?javax.xml.transform.Transformer;
import?javax.xml.transform.TransformerConfigurationException;
import?javax.xml.transform.sax.SAXTransformerFactory;
import?javax.xml.transform.sax.TransformerHandler;
import?javax.xml.transform.stream.StreamResult;
import?org.xml.sax.SAXException;
import?org.xml.sax.helpers.AttributesImpl;
import?Entity.Book;
public?class?SaxTest?{
?public?static?void?main(String[]?args)?{
??//?TODO?Auto-generated?method?stub
????SaxTest?st=new?SaxTest();
???//?st.parseXML();
????st.createXML();
??
?}
?
?public?ArrayList<Book>?parseXML(){
??//獲取一個(gè)SAXParserFactory的實(shí)例
??SAXParserFactory?factory=SAXParserFactory.newInstance();
??SaxParserHandler?handler=null;
??try?{
????//通過factory獲取一個(gè)saxpaser的實(shí)例
????SAXParser?parser=factory.newSAXParser();
????//uri是路徑???創(chuàng)建SAXhandler對(duì)象
????handler=new?SaxParserHandler();
????parser.parse("新建文本文檔.xml",?handler);
//????System.out.println(handler.getBooklist().size());
//????for?(Book?book?:?handler.getBooklist())?{
//?????System.out.println(book.getAuthor());
//?????System.out.println("====完成====");
//????}
??}?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();
??}
??return?handler.getBooklist();??
?}
?
?public?void?createXML(){
??ArrayList<Book>?booklist?=parseXML();
??//生成xml
??//創(chuàng)建一個(gè)SAXtransformerfactory對(duì)象
??SAXTransformerFactory?tff=(SAXTransformerFactory)?SAXTransformerFactory.newInstance();
??try?{
???//創(chuàng)建transforemerhandler對(duì)象。
???TransformerHandler?handler=?tff.newTransformerHandler();
???//創(chuàng)建transformer對(duì)象
???Transformer?tr=?handler.getTransformer();
???//通過transformer對(duì)xml文件進(jìn)行設(shè)置
???tr.setOutputProperty(OutputKeys.ENCODING,?"utf-8");?//設(shè)置編碼???必須在setresult之前
???tr.setOutputProperty(OutputKeys.INDENT,?"yes");????//設(shè)置換行
???//創(chuàng)建result對(duì)象
???File?f=?new?File("src/res/books.xml");
???if(!f.exists()){
????try?{
?????f.createNewFile();
????}?catch?(IOException?e)?{
?????//?TODO?Auto-generated?catch?block
?????e.printStackTrace();
????}
???}
?
???//創(chuàng)建result對(duì)象并且使其與handler關(guān)聯(lián)
???javax.xml.transform.Result?result=new?StreamResult(new?FileOutputStream(f));
???handler.setResult(result);
???
???//利用handler對(duì)xml文件進(jìn)行內(nèi)容的編寫
???//打開document
???handler.startDocument();
???AttributesImpl?attr=new?AttributesImpl();
???
???//startelement是創(chuàng)建的節(jié)點(diǎn)????characters是創(chuàng)建節(jié)點(diǎn)的值
???
???handler.startElement("",?"",?"bookstore",?attr);
???
???for?(Book?book?:?booklist)?{
????attr.clear();
????attr.addAttribute("",?"",?"id",?"",?book.getId());
????handler.startElement("",?"",?"book",?attr);
????
????attr.clear();
????handler.startElement("",?"",?"name",?attr);
????handler.characters(book.getName().toCharArray(),0?,book.getName().length()?);
????handler.endElement("",?"",?"name");
????
????attr.clear();
????handler.startElement("",?"",?"year",?attr);
????handler.characters(book.getYear().toCharArray(),0?,book.getYear().length()?);
????handler.endElement("",?"",?"year");
????
????attr.clear();
????handler.startElement("",?"",?"author",?attr);
????handler.characters(book.getAuthor().toCharArray(),0?,book.getAuthor().length()?);
????handler.endElement("",?"",?"author");
????
????handler.endElement("",?"",?"book");??
???}
???
???handler.endElement("",?"",?"bookstore");
???
???
???//關(guān)閉document
???handler.endDocument();
???
???}?catch?(FileNotFoundException?e)?{
????//?TODO?Auto-generated?catch?block
????e.printStackTrace();??
??}?catch?(TransformerConfigurationException?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}catch?(SAXException?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}
?}
}
/*還報(bào)錯(cuò)了?
?com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:?Invalid?byte?1?of?1-byte?UTF-8?sequence.
?at?com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
?at?com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
?at?com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
?at?com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487)
?at?com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2687)
?at?com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
?at?com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
?at?com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
?at?com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
?at?com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
?at?com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
?at?com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
?at?javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
?at?javax.xml.parsers.SAXParser.parse(SAXParser.java:277)
?at?SAX.SaxTest.parseXML(SaxTest.java:46)
?at?SAX.SaxTest.createXML(SaxTest.java:66)
?at?SAX.SaxTest.main(SaxTest.java:33)
*/


正在回答

4 回答

public?void?SAXWriteXml()?{
		List<Book>?bookList?=?SAXReadXml();
		//?1?創(chuàng)建SAXTransformerFactory類的對(duì)象
		SAXTransformerFactory?stff?=?(SAXTransformerFactory)?SAXTransformerFactory
				.newInstance();
		try?{
			//?2通過SAXTransformerFactory對(duì)象創(chuàng)建一個(gè)TransformerHandler對(duì)象
			TransformerHandler?handler?=?stff.newTransformerHandler();
			//?3通過handler創(chuàng)建Transformer對(duì)象
			Transformer?tf?=?handler.getTransformer();
			//?4通過Transformer對(duì)象對(duì)生成的xml文件進(jìn)行設(shè)置
			tf.setOutputProperty(OutputKeys.ENCODING,?"utf-8");
			tf.setOutputProperty(OutputKeys.INDENT,?"yes");
			//?5創(chuàng)建一個(gè)Result對(duì)象
			File?file?=?new?File("source/shuji.xml");
			if?(!file.exists())?{
				file.createNewFile();
			}
			//?6創(chuàng)建Result對(duì)象,result與handler關(guān)聯(lián)
			Result?result?=?new?StreamResult(new?FileOutputStream(file));
			handler.setResult(result);
			//?7利用Handler對(duì)象進(jìn)行xml文件內(nèi)容的填充
			//?打開document文檔
			handler.startDocument();
			AttributesImpl?atts?=?new?AttributesImpl();
			handler.startElement("",?"",?"bookstore",?atts);
			for?(Book?book?:?bookList)?{
				atts.clear();
				atts.addAttribute("",?"",?"id",?"",?book.getId());
				handler.startElement("",?"",?"book",?atts);
				atts.clear();
				//?創(chuàng)建name節(jié)點(diǎn)
				if?((book.getName()?!=?null)
						&&?!book.getName().trim().equals(""))?{
					atts.clear();
					System.out.println("+++++name+++++");
					handler.startElement("",?"",?"name",?atts);//這里沒有執(zhí)行
					System.out.println("+++++name+++++");
					handler.characters(book.getName().toCharArray(),?0,?book
							.getName().length());
					handler.endElement("",?"",?"name");
					
				}
				if?(!book.getAuthor().trim().equals("")
						&&?(book.getAuthor()?!=?null))?{
					atts.clear();
					System.out.println("+++++author+++++");
					handler.startElement("",?"",?"author",?atts);
					handler.characters(book.getAuthor().toCharArray(),?0,?book
							.getAuthor().length());
					handler.endElement("",?"",?"author");
				}
				if?(!book.getYear().trim().equals("")
						&&?(book.getYear()?!=?null))?{
					atts.clear();
					handler.startElement("",?"",?"year",?atts);
					handler.characters(book.getYear().toCharArray(),?0,?book
							.getYear().length());
					handler.endElement("",?"",?"year");
				}
				if?(!book.getPrice().trim().equals("")
						&&?(book.getPrice()?!=?null))?{
					atts.clear();
					handler.startElement("",?"",?"price",?atts);
					handler.characters(book.getPrice().toCharArray(),?0,?book
							.getPrice().length());
					handler.endElement("",?"",?"price");
				}
				if?(!book.getLanguage().trim().equals("")
						&&?(book.getLanguage()?!=?null))?{
					atts.clear();
					handler.startElement("",?"",?"language",?atts);
					handler.characters(book.getLanguage().toCharArray(),?0,
							book.getLanguage().length());
					handler.endElement("",?"",?"language");
				}

				handler.endElement("",?"",?"book");
			}

			handler.endElement("",?"",?"bookstore");
			//?關(guān)閉document
			handler.endDocument();
		}?catch?(TransformerConfigurationException?e)?{
			e.printStackTrace();
		}?catch?(FileNotFoundException?e)?{
			e.printStackTrace();
		}?catch?(IOException?e)?{
			e.printStackTrace();
		}?catch?(SAXException?e)?{
			e.printStackTrace();
		}
	}
	//異常
	Exception?in?thread?"main"?java.lang.NullPointerException
	at?com.sun.org.apache.xml.internal.serializer.ToStream.writeAttrString(ToStream.java:1967)
	at?com.sun.org.apache.xml.internal.serializer.ToStream.processAttributes(ToStream.java:1947)
	at?com.sun.org.apache.xml.internal.serializer.ToStream.closeStartTag(ToStream.java:2443)
	at?com.sun.org.apache.xml.internal.serializer.ToStream.startElement(ToStream.java:1783)
	at?com.sun.org.apache.xml.internal.serializer.ToUnknownStream.startElement(ToUnknownStream.java:548)
	at?com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.startElement(TransformerHandlerImpl.java:267)
	at?com.live.imooc.test.SAXTest.SAXWriteXml(SAXTest.java:70)
	at?com.live.imooc.test.SAXTest.main(SAXTest.java:31)

上面是我寫的函數(shù);報(bào)的錯(cuò)誤是空指針異常。


0 回復(fù) 有任何疑惑可以回復(fù)我~

上一個(gè)回答不好,我在回答一下,改還是那樣改

但是邏輯是因?yàn)?amp;&是個(gè)短路與

?if?((book.getLanguage()?!=?null)

????????????????????????&&?!book.getLanguage().trim().equals(""))

這樣判斷首先判斷是不是空,如果是空直接整個(gè)if就是false了if里的代碼就不執(zhí)行了

?if?(!book.getLanguage().trim().equals("")

????????????????????????&&?(book.getLanguage()?!=?null)){}

這樣判斷的話程序先會(huì)判斷book.getLanguage()是不是個(gè)空格,用的equals方法

相當(dāng)于兩個(gè)對(duì)象比較,第一本書都沒有Language,怎么和空格比呢,

所以程序直接報(bào)了空指針異常,程序就結(jié)束了

0 回復(fù) 有任何疑惑可以回復(fù)我~

你的if條件判斷有問題

?if?(!book.getYear().trim().equals("")

????????????????????????&&?(book.getYear()?!=?null)){}這樣判斷是不對(duì)的

應(yīng)該改成

?if?((book.getYear()?!=?null)

????????????????????????&&?!book.getYear().trim().equals(""))


因?yàn)??&& 是個(gè)短路與判斷

你得先判斷是不是空再 && 是不是等于空格

name year author 都得改



0 回復(fù) 有任何疑惑可以回復(fù)我~

我根據(jù)課程編寫SAX方式寫入xml文件也報(bào)錯(cuò);在?handler.startElement("",?"",?"name",?attr);這句沒有執(zhí)行,不明原因。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么生成不了book,name這些節(jié)點(diǎn)?執(zhí)行后只有bookstore

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)