最近一直在纠结关于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编程艺术 --全
JavaScriptDOM编程艺术(第2版)PDF版本下载
《JavaScript DOM编程艺术:第2版》讲述了JavaScript、DOM 和HTML5 的基础知识,着重介绍DOM 编程技术背后的思路和原则:平稳退化、渐进增强和以用户...《JavaScript DOM编程艺术:第2版》适合Web 设计师和开发人员阅读。
经典之作《javascript dom编程艺术》源码。通过一个实际案例,讲述了原生的javascript操作dom的使用方法,以及操作dom中应该注意的一些事项。
本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...
JavaScript.DOM编程艺术(第2版)附录及源码,JavaScript.DOM编程艺术(第2版)附录及源码
《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以... 《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。
《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户...《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。
javaScript-DOM编程艺术javaScript-DOM编程艺术javaScript-DOM编程艺术javaScript-DOM编程艺术
JavaScript_DOM编程艺术第二版(中文),欢迎下载,111111111111111111111
JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术
javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户... 《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。
本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...
JavaScriptDOM编程艺术.中文版.完整书签 本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书...
JavaScript DOM编程艺术,高清资源,无比经典,值得拥有
DOM编程艺术 书+源码
本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...
JavaScript DOM编程艺术 第2版.zip.002 由于上传文件大小的限制,故分成两个压缩卷,请查找对应的第一部分 学习Javascript用《JavaScript DOM编程艺术》来入门最好不过了,老老实实看两遍,看完了你就会对JS有一个...
JavaScript.DOM编程艺术(第2版)源码
JavaScript+DOM编程艺术+清晰中文版 网页前端工程师的入门级图书 网页设计的必备书籍