日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

Java——SAX生成XML文件

發(fā)布時(shí)間:2025/7/14 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java——SAX生成XML文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SAX生成XML文件?

準(zhǔn)備工作

創(chuàng)建一個(gè)SAXTransformerFactory 類對(duì)象

//創(chuàng)建一個(gè) SAXTransformerFactory 類對(duì)象 SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();

通過(guò)SAXTransformerFactory 對(duì)象創(chuàng)建一個(gè) Transformer 對(duì)象

//通過(guò) SAXTransformerFactory 對(duì)象創(chuàng)建一個(gè) TransformerHandler 對(duì)象 TransformerHandler handler = tff.newTransformerHandler();

設(shè)置 xml 文件編碼格式和自動(dòng)換行

//設(shè)置生成的 XML 文件編碼格式 tr.setOutputProperty(OutputKeys.ENCODING, "utf-8"); //設(shè)置生成的 XML 文件自動(dòng)換行 tr.setOutputProperty(OutputKeys.INDENT, "yes");

?判斷生成的?xml?文件?是否存在,不存在就創(chuàng)建一個(gè)新的

//如果不存在,就創(chuàng)建一個(gè)新的 XML 文件 File file = new File("newSchool.xml"); if (!file.exists()) {file.createNewFile(); }

?

創(chuàng)建一個(gè) Result 對(duì)象,并且使其與 TransformerHandler對(duì)象關(guān)聯(lián)

//創(chuàng)建一個(gè)Result 對(duì)象,并且使其與 TransformerHandler 對(duì)象關(guān)聯(lián) Result result = new StreamResult(new FileOutputStream(file)); handler.setResult(result);

?


?

?

利用 handler 對(duì)象進(jìn)行 xml 文件內(nèi)容的編寫

打開 document

//打開 document handler.startDocument();

生成根節(jié)點(diǎn)標(biāo)簽

AttributesImpl atts = new AttributesImpl(); //根節(jié)點(diǎn)開始標(biāo)簽 handler.startElement("", "", "School", atts);

設(shè)置字節(jié)點(diǎn)的屬性和屬性值 并創(chuàng)建子節(jié)點(diǎn)的開始標(biāo)簽

//設(shè)置屬性和屬性值 atts.addAttribute("", "", "id", "", "1"); //子節(jié)點(diǎn)開始標(biāo)簽 handler.startElement("", "", "student", atts);

?

創(chuàng)建子節(jié)點(diǎn)下的 name 節(jié)點(diǎn)并給其添加內(nèi)容

atts.clear(); //清空子節(jié)點(diǎn)設(shè)的值 //字節(jié)點(diǎn)下name節(jié)點(diǎn)開始標(biāo)簽 handler.startElement("", "", "name", atts); String name="小王"; handler.characters(name.toCharArray(), 0, name.length()); //字節(jié)點(diǎn)下name節(jié)點(diǎn)結(jié)束標(biāo)簽 handler.endElement("", "", "name");

?

有開始就結(jié)束,在 XML 當(dāng)中標(biāo)簽都是成對(duì)出現(xiàn)的,下面就是結(jié)束標(biāo)簽,以及關(guān)閉 document對(duì)象

//子節(jié)點(diǎn)結(jié)束標(biāo)簽 handler.endElement("", "", "student");//根節(jié)點(diǎn)結(jié)束標(biāo)簽 handler.endElement("", "", "School");//關(guān)閉 document handler.endDocument();

?

運(yùn)行結(jié)果:

<?xml version="1.0" encoding="utf-8"?><School> <student id="1"> <name>小王</name> </student> </School>

完整代碼:

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.helpers.AttributesImpl;public class CreateXMLBySAX {public static void main(String[] args) {//創(chuàng)建一個(gè) SAXTransformerFactory 類對(duì)象SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();try {//通過(guò) SAXTransformerFactory 對(duì)象創(chuàng)建一個(gè) TransformerHandler 對(duì)象TransformerHandler handler = tff.newTransformerHandler();//通過(guò) TransformerHandler 對(duì)象創(chuàng)建一個(gè) Transformer 對(duì)象Transformer tr = handler.getTransformer();//設(shè)置生成的 XML 文件編碼格式tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");//設(shè)置生成的 XML 文件自動(dòng)換行tr.setOutputProperty(OutputKeys.INDENT, "yes");//如果不存在,就創(chuàng)建一個(gè)新的 XML 文件File file = new File("newSchool.xml");if (!file.exists()) {file.createNewFile();}//創(chuàng)建一個(gè)Result 對(duì)象,并且使其與 TransformerHandler 對(duì)象關(guān)聯(lián)Result result = new StreamResult(new FileOutputStream(file));handler.setResult(result);//利用 handler 對(duì)象進(jìn)行 XML 文件內(nèi)容的編寫//打開 document handler.startDocument();//為了創(chuàng)建節(jié)點(diǎn)屬性和屬性值AttributesImpl atts = new AttributesImpl();//根節(jié)點(diǎn)開始標(biāo)簽handler.startElement("", "", "School", atts);//atts.clear(); //清空 atts 的值//設(shè)置屬性和屬性值atts.addAttribute("", "", "id", "", "1");//子節(jié)點(diǎn)開始標(biāo)簽handler.startElement("", "", "student", atts);atts.clear(); //清空子節(jié)點(diǎn)設(shè)的值//字節(jié)點(diǎn)下name節(jié)點(diǎn)開始標(biāo)簽handler.startElement("", "", "name", atts);String name="小王";handler.characters(name.toCharArray(), 0, name.length());//字節(jié)點(diǎn)下name節(jié)點(diǎn)結(jié)束標(biāo)簽handler.endElement("", "", "name");//子節(jié)點(diǎn)結(jié)束標(biāo)簽handler.endElement("", "", "student");//根節(jié)點(diǎn)結(jié)束標(biāo)簽handler.endElement("", "", "School");//關(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();}} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/szj-ang/p/7492618.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Java——SAX生成XML文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。