-
SAX方式生成xml文件的準(zhǔn)備工作:
// 1.創(chuàng)建一個(gè)TransformerFactory類(lèi)的對(duì)象
SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory
.newInstance();
try {
// 2.通過(guò)SAXTransformerFactory對(duì)象創(chuàng)建一個(gè)TransformerHandler對(duì)象
TransformerHandler handler = tff.newTransformerHandler();
// 3.通過(guò)handler對(duì)象創(chuàng)建一個(gè)Transformer對(duì)象
Transformer tr = handler.getTransformer();
// 4.通過(guò)Transformer對(duì)象對(duì)生成的xml文件進(jìn)行設(shè)置
// 設(shè)置xml的編碼
tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// 設(shè)置xml的“是否換行”
tr.setOutputProperty(OutputKeys.INDENT, "yes");
// 5.創(chuàng)建一個(gè)File對(duì)象用于接收寫(xiě)入的操作
File f = new File("src/res/newbooks.xml");
if (!f.exists()) {
f.createNewFile();
}
// 6.創(chuàng)建Result對(duì)象,并且使其與handler關(guān)聯(lián)
Result result = new StreamResult(new FileOutputStream(f));
handler.setResult(result);查看全部 -
standalone : 用來(lái)表示該文件是否呼叫其它外部的文件。若值是 ”yes” 表示沒(méi)有呼叫外部文件,即說(shuō)明當(dāng)前的xml文件是沒(méi)有DTD和Schema作為它的相關(guān)文檔,若值是 ”no” 則表示有呼叫外部文件。默認(rèn)值是 “yes”。
PS:DTD是文檔類(lèi)型定義(Document Type Definition)是一套關(guān)于標(biāo)記符的語(yǔ)法規(guī)則。
查看全部 -
將DOM樹(shù)轉(zhuǎn)換成XML文件
1.創(chuàng)建TransformerFactory對(duì)象,F(xiàn)actory為工廠(chǎng)類(lèi),不能直接new對(duì)象,通過(guò)newInstance獲取對(duì)象
????TransformerFactory tff = TransformerFactory.newInstance();
2.通過(guò)tff獲取Transfomer對(duì)象
????Transformer tf = tff.newTransformer();
3.指定換行格式
????tf.setOutputProperty(OutputKeys.INDENT,"yes");
4.用DOM樹(shù)生成XML文件,將DOM樹(shù)以及輸出流作為參數(shù)傳入
????tf.transform(new DOMSource(Document do),new StreamResult(new File("books1.xml"));查看全部 -
創(chuàng)建XML文件步驟
1,前兩個(gè)步驟和解析XML文件一致,都是獲取DocumentBuilder對(duì)象
?? DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
?? DocumentBuilder db = dbf.getDocumentBuilder();
2,通過(guò)DocumentBuilder的newDocument方法獲取Document對(duì)象,代表著要生成的DOM樹(shù)
?? Document do = db.newDocument();
3,將根節(jié)點(diǎn)添加進(jìn)DOM樹(shù)
?? Element ele = do.createElement("bookStore");
?? document.appendChild(ele);
4,將子節(jié)點(diǎn)添加進(jìn)DOM樹(shù)
?? Element ele1 = document.createElement("book");
?? ele.appendChild(ele1)
5,將子節(jié)點(diǎn)的屬性及屬性值添加進(jìn)DOM樹(shù)
?? ele1.setAttribute("id","1");查看全部 -
DOM:418;SAX:3;JDOM:158;DOM4J:59 SAX快但是不便于回頭修改查看全部
-
standalone="no"說(shuō)明dtd那里有說(shuō)明文檔查看全部
-
解析xml文件常用的4中方法:DOM,SAX,JDOM,DOM4J查看全部
-
DOM/SAX官方自帶: DOM生成DOM樹(shù)加載到內(nèi)存,方便修改,性能慢。 SAX性能最高,但是不能返回修改便簽中的內(nèi)容 DOM4J相對(duì)綜合最好,應(yīng)用廣泛查看全部
-
如果要頻繁修改選擇DOM方式,否則選擇SAX(速率較快)。 假設(shè)我現(xiàn)在要生成一個(gè)xml。讓它去存儲(chǔ)書(shū)籍信息。首先寫(xiě)根節(jié)點(diǎn)bookstore,然后添加第一本書(shū),然后添加第二本書(shū),這時(shí)候發(fā)現(xiàn)第一本書(shū)中有某一個(gè)內(nèi)容忘記添加了,想回去進(jìn)行修改或增加。這時(shí)候我們發(fā)現(xiàn)SAX解析是無(wú)法做到這一點(diǎn)的,因?yàn)镾AX解析是基于事件的?;谑录哪P湍?,把某一個(gè)標(biāo)簽走完了之后,它是不能走回頭路的,它沒(méi)有狀態(tài)性可言。所以在使用DOM還是SAX進(jìn)行選擇時(shí),要考慮到你是不是要對(duì)生成的模型進(jìn)行頻繁的修改。如果不是呢,建議選用SAX,因?yàn)镾AX的性能也是非常高的。查看全部
-
JDOM設(shè)置XML文本的格式和編碼: //方法一: Format fromat=Format.getCompactFormat(); format.setIndent(""); fromat.setEncodeing("GBK"); XMLOutputter outputter=new XMLOutputter(format); //方法二: Format format=Format.getPrettyFormat(); format.setEncoding("GBK");查看全部
-
JDOM生成XML不會(huì)轉(zhuǎn)義的方法: Element title = new Element("title"); //title.setText("國(guó)內(nèi)最新新聞"); CDATA cdata = new CDATA("<!上海移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)促進(jìn)中心正式揭牌>"); title.addContent(cdata); channel.addContent(title);查看全部
-
通過(guò)JDOM方式生成XML文件步驟: private void createXML() { //1.生成一個(gè)根節(jié)點(diǎn) Element rss = new Element("rss"); //2.為節(jié)點(diǎn)添加屬性 rss.setAttribute("version", "2.0"); //3.生成一個(gè)document對(duì)象 Document document = new Document(rss); //4.創(chuàng)建XMLOutputter的對(duì)象 XMLOutputter outputter = new XMLOutputter(); try { outputter.output(document,new FileOutputStream(new File("rssnews.xml"))); } catch (IOException e) { e.printStackTrace(); }查看全部
-
處理轉(zhuǎn)義字符: 在寫(xiě)XML文件時(shí)有一些符號(hào)是轉(zhuǎn)義字符,會(huì)默認(rèn)進(jìn)行轉(zhuǎn)義操作,從而不會(huì)直接顯示原字符。 人為設(shè)置是否轉(zhuǎn)義的方法: 在生成XML文件時(shí)進(jìn)行設(shè)置: writer.setEscapeText(boolean);//默認(rèn)值是false,代表轉(zhuǎn)義查看全部
-
//4.生成子節(jié)點(diǎn)及節(jié)點(diǎn)內(nèi)容 Element channel = rss.addElement("channel"); Element title = channel.addElement("title"); title.setText("國(guó)內(nèi)最新新聞"); //5.設(shè)置生成xml的格式 OutputFormat format = OutputFormat.createPrettyPrint();//自動(dòng)換行和縮進(jìn) format.setEncoding("GBK"); //6.生成xml文件 File file = new File("rssnews.xml"); try { XMLWriter writer = new XMLWriter(new FileOutputStream(file),format); writer.write(document); writer.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }查看全部
-
RSS通常是用來(lái)描述和同步網(wǎng)站內(nèi)容的一種格式,本質(zhì)是xml xml通常的用途就是可以共享數(shù)據(jù) rss文件格式:<xml version = 版本號(hào) encoding = 編碼> <rss version = 版本號(hào)> <channel>內(nèi)容</channel> </rss> </xml>查看全部
舉報(bào)