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