課程
/后端開發(fā)
/Java
/Java眼中的XML 文件寫入
大家沒發(fā)現(xiàn)生成的第一個book節(jié)點沒有結(jié)束標(biāo)記</book>嗎?
怎么回事??
2016-04-13
源自:Java眼中的XML 文件寫入 3-3
正在回答
package?com.imooc.test; import?java.io.File; import?java.io.FileNotFoundException; import?java.io.FileOutputStream; import?java.io.IOException; import?java.io.OutputStream; import?java.util.ArrayList; import?javax.xml.parsers.ParserConfigurationException; import?javax.xml.parsers.SAXParser; import?javax.xml.parsers.SAXParserFactory; import?javax.xml.transform.OutputKeys; import?javax.xml.transform.Result; 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.SAXParseException; import?org.xml.sax.helpers.AttributesImpl; public?class?SaxTest?{ ? ??public??ArrayList<Book>?xmlParse(){ ???SAXParserFactory?factory=SAXParserFactory.newInstance(); ???HandlerTest?handler=null;?? ???try?{ ????SAXParser?parser=factory.newSAXParser(); ?????handler=new?HandlerTest(); ???????parser.parse("f:\\books.xml",handler);? ????/*??System.out.println("----共有"+handler.getBookList().size()+"本書-----");? ??????for(Book?book1:handler.getBookList()){//遍歷booList中的內(nèi)容 ???????System.out.println("===========開始=========="); ???????System.out.println(book1.getID()); ???????System.out.println(book1.getName()); ???????System.out.println(book1.getAuthor()); ???????System.out.println(book1.getYear()); ???????System.out.println(book1.getPrice()); ???????System.out.println(book1.getLanguage()); ???????System.out.println("===========結(jié)束=========="); ??????}*/ ??? ???}?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?xmlCreate(){ ???ArrayList<Book>?booklist=xmlParse(); ??SAXTransformerFactory?tff=(SAXTransformerFactory)?SAXTransformerFactory.newInstance(); ??try?{ ???TransformerHandler?handler=tff.newTransformerHandler(); ???Transformer?tf=handler.getTransformer(); ???tf.setOutputProperty(OutputKeys.ENCODING,?"UTF-8"); ???tf.setOutputProperty(OutputKeys.INDENT,?"yes"); ???File?f=new?File("src/res/newbooks.xml"); ???if(!f.exists()){ ???????f.createNewFile(); ???} ???Result?result=new?StreamResult(new?FileOutputStream(f)); ???handler.setResult(result); ???handler.startDocument(); ???AttributesImpl?attr=new?AttributesImpl(); ???handler.startElement("","","bookStore",attr); ???for(Book?book:booklist){ ???attr.clear(); ???attr.addAttribute("",?"",?"id","",book.getID()); ?????????handler.startElement("","","book",attr); ???????? ?????????if(book.getName()!=null&&!book.getName().trim().equals("")){ ????????????attr.clear(); ????????????handler.startElement("",?"","name",?attr);? ????????????handler.characters(book.getName().toCharArray(),?0,book.getName().length()); ?????????????handler.endElement("","","name"); ?????????} ???????? ????????? ???????? ?????????if(!book.getAuthor().equals(null)&&!book.getAuthor().trim().equals("")){ ???????????attr.clear(); ??????????????handler.startElement("",?"","author",?attr); ??????????????handler.characters(book.getAuthor().toCharArray(),?0,book.getAuthor().length()); ???????????????handler.endElement("","","author"); ?????????} ???????????? ???????????if(book.getYear()!=null&&!book.getYear().trim().equals("")){ ??????????attr.clear(); ??????????handler.startElement("",?"","year",?attr);?????????? ?????????????handler.characters(book.getYear().toCharArray(),?0,book.getYear().length()); ?????????????handler.endElement("","","year");????????? ?????????} ????????????if(book.getLanguage()!=null&&!book.getLanguage().trim().equals("")){ ??????????attr.clear(); ??????????handler.startElement("",?"","language",?attr);?????????? ?????????????handler.characters(book.getLanguage().toCharArray(),?0,book.getLanguage().length()); ?????????????handler.endElement("","","language");????????? ?????????} ????????????if(book.getPrice()!=null&&!book.getPrice().trim().equals("")){ ??????????attr.clear(); ??????????handler.startElement("",?"","price",?attr);?????????? ?????????????handler.characters(book.getPrice().toCharArray(),?0,book.getPrice().length()); ?????????????handler.endElement("","","price");????????? ?????????} ???? ????????????handler.endElement("","","book"); ???} ???handler.endElement("","","bookStore"); ???handler.endDocument(); ??? ??? ??}?catch?(TransformerConfigurationException?e)?{ ???//?TODO?Auto-generated?catch?block ???e.printStackTrace(); ??}?catch?(FileNotFoundException?e)?{ ????//?TODO?Auto-generated?catch?block ????e.printStackTrace(); ?}catch?(IOException?e)?{ ?????//?TODO?Auto-generated?catch?block ?????e.printStackTrace(); ?}catch?(SAXException?e)?{ ??//?TODO?Auto-generated?catch?block ??e.printStackTrace(); ?}? ??}?? ?public?static?void?main(String[]?args)?{ ??//?TODO?Auto-generated?method?stub ?SaxTest?test=new?SaxTest(); ?test.xmlCreate(); ?} }
代碼的位置放置不對
估計是你的代碼漏了這一句:tfhandler.endElement("", "", "book");
舉報
舉例說明JAVA程序如何生成XML文檔,多種生成方式任你選擇
1 回答如何插入第二個book節(jié)點?
4 回答為什么生成不了book,name這些節(jié)點?執(zhí)行后只有bookstore
1 回答節(jié)點的值為空值,生成的xml 沒有開始、結(jié)束節(jié)點 例如<name/>
2 回答求教,系統(tǒng)是如何辨別book是bookStore的子節(jié)點的?
5 回答換行但是沒有縮進(jìn)。。。這個要怎么辦? 如何在已有的xml文件中,再加一個book子節(jié)點?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-09-02
代碼的位置放置不對
2016-04-13
估計是你的代碼漏了這一句:tfhandler.endElement("", "", "book");