DOM程式設計
最近一直在糾結關於xml方面的知識,包括xml語法,分析xml的結構和語法:包括DTD 和schema的語法定義等.
特別是到了xml解析這部分,我們在面試的時候經常會被問到這樣的問題.
下面的一個例子是關於DOM解析的:
package com.j2ee14.ch4;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
public class DOMStudy {
Document doc;
public static void main(String[] args) throws Exception {
DOMStudy domStudy=new DOMStudy();
domStudy.genDocInstance();
domStudy.genDocument();
domStudy.printDoc();
domStudy.modifyNode();
domStudy.printDoc();;
domStudy.removeNode();
domStudy.printDoc();
domStudy.replaceNode();
domStudy.printDoc();
domStudy.removeAttribute();
domStudy.printDoc();
}
private void genDocInstance(){
System.out.println("build a document instance...");
try{
DocumentBuilderFactory domFactory= DocumentBuilderFactory.newInstance();
domFactory.setValidating(false);
domFactory.setNamespaceAware(true);
DocumentBuilder domBuilder=domFactory.newDocumentBuilder();
domBuilder.setErrorHandler(new MyErrorHandler());
doc=domBuilder.newDocument();
}catch(Exception e){
e.printStackTrace();
}
}
private void genDocument(){
System.out.println("fill the content of the document.....");
Element root=doc.createElement("student");
root.setAttribute("id", "001");
Element item=doc.createElement("name");
item.appendChild(doc.createTextNode("jeff"));
root.appendChild(item);
item=doc.createElement("age");
item.appendChild(doc.createTextNode("24"));
root.appendChild(item);
item=doc.createElement("height");
item.appendChild(doc.createTextNode("1.70"));
root.appendChild(item);
item=doc.createElement("classId");
item.appendChild(doc.createTextNode("2010212160006"));
root.appendChild(item);
item=doc.createElement("address");
Element state=doc.createElement("state");
state.appendChild(doc.createTextNode("beijing"));
Element city=doc.createElement("city");
city.appendChild(doc.createTextNode("beijing"));
Element street=doc.createElement("street");
street.appendChild(doc.createTextNode("fuxing road"));
item.appendChild(state);
item.appendChild(city);
item.appendChild(street);
root.appendChild(item);
doc.appendChild(root);
}
private void printDoc()throws Exception{
System.out.println("====================");
System.out.println("print the document....");
OutputFormat outFormat=new OutputFormat(doc);
StringWriter stringout=new StringWriter();
XMLSerializer serial=new XMLSerializer(stringout,outFormat);
serial.asDOMSerializer();
serial.serialize(doc.getDocumentElement());
System.out.println("STRXML ="+stringout.toString());
}
private void modifyNode(){
System.out.println("modify the node value....");
Element root=doc.getDocumentElement();
Element name=(Element) root.getFirstChild();
name.getFirstChild().setNodeValue("hesihua");
}
private void removeNode(){
System.out.println("remove the node....");
Element root=doc.getDocumentElement();
root.removeChild(root.getFirstChild().getNextSibling());
}
private void replaceNode(){
System.out.println("replace a node.....");
Element root=doc.getDocumentElement();
Element item=doc.createElement("profession");
item.appendChild(doc.createTextNode("software"));
root.replaceChild(item, root.getFirstChild());
}
private void removeAttribute(){
System.out.println("remove a attribute");
Element root=doc.getDocumentElement();
root.removeAttribute("id");
}
}
上面的程式碼在執行後得到的結果如下:
build a document instance...
fill the content of the document.....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>jeff</name><age>24</age><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
modify the node value....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>hesihua</name><age>24</age><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
remove the node....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>hesihua</name><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
replace a node.....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><profession>software</profession><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
remove a attribute
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student><profession>software</profession><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
真覺得DOM解析很強大...
相關文章
- 高效能JavaScript DOM程式設計JavaScript程式設計
- JavaScript DOM程式設計藝術筆記1JavaScript程式設計筆記
- 《JavaScript高階程式設計》筆記:DOM(十)JavaScript程式設計筆記
- 【Javascript】DOM程式設計學習總結篇JavaScript程式設計
- 《JavaScript DOM程式設計藝術》知識整理JavaScript程式設計
- 設計DOM&CSSCSS
- 高效能JS筆記3——DOM程式設計JS筆記程式設計
- 《JS DOM程式設計藝術》之個人總結JS程式設計
- 好程式設計師分享JavaScript之-文件物件模型(DOM)程式設計師JavaScript物件模型
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- 《Javacript DOM 程式設計藝術》筆記(一)JavaScript Syntax程式設計筆記JavaScript
- JavaScript DOM 程式設計藝術 學習筆記01JavaScript程式設計筆記
- JavaScript DOM 程式設計藝術 學習筆記 02JavaScript程式設計筆記
- 2020/6/11 JavaScript高階程式設計 DOMJavaScript程式設計
- JavaScript DOM程式設計藝術筆記2.1準備工作JavaScript程式設計筆記
- 好程式設計師web前端培訓分享HTML DOM節點程式設計師Web前端HTML
- 好程式設計師web前端培訓分享HTML DOM簡介程式設計師Web前端HTML
- JavaScript DOM 程式設計藝術(第2版) 讀書筆記JavaScript程式設計筆記
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 推薦JS入門書:JavaScript DOM程式設計藝術(第2版)JSJavaScript程式設計
- 《JavaScript DOM程式設計藝術》作者談:原型程式碼與生產程式碼之間的矛盾JavaScript程式設計原型
- 常見樣式設計及DOM操作整理
- 小程式操作dom
- JavaScript DOM程式設計藝術第四章 — JavaScript圖片庫案例研究JavaScript程式設計
- JavaScript入門學習之旅(二)——JavaScript DOM程式設計藝術學習筆記(上)JavaScript程式設計筆記
- 探秘JavaScript深度領域:精通物件導向程式設計、虛擬DOM等核心技術JavaScript物件程式設計
- DOM0事件和DOM2事件模型 —— JS中的設計模式和元件封裝事件模型JS設計模式元件封裝
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- 程式設計思想 面向切面程式設計程式設計
- 《程式設計師程式設計藝術》程式設計師
- dom操作程式碼例項
- 程式設計小記-程式設計規範程式設計
- 從程式設計到養生程式設計程式設計
- 【go網路程式設計】-HTTP程式設計Go程式設計HTTP
- 程式設計模式-表驅動程式設計程式設計設計模式
- 程式設計能力與程式設計年齡程式設計
- 程式設計師程式設計10大原則程式設計師
- 所有程式設計皆為Web程式設計程式設計Web