org.w3c.dom(java dom)解析XML文档
webservice返回的xml格式

webservice返回的xml格式WebService是一种基于Web的服务,通过网络进行通信和交互。
它使用XML(可扩展标记语言)作为数据交换的格式,以实现不同平台和应用程序之间的数据传输和共享。
本文将介绍WebService返回的XML格式及其相关内容。
一、XML格式简介XML是一种用于描述、存储和传输数据的标记语言。
它使用标签来标识数据的结构和含义,使得数据可以被解析和理解。
XML格式具有以下特点:1. 可扩展性:可以根据需要定义自己的标签和结构。
2. 可读性:使用人类可读的文本格式,易于理解和编辑。
3. 平台无关性:可以在不同的操作系统和应用程序之间进行数据交换。
4. 自描述性:标签和属性可以描述数据的结构和含义。
二、WebService返回的XML格式WebService通常使用XML格式来返回数据。
返回的XML格式可以根据具体的业务需求和数据结构进行定义。
以下是一个示例:```xml<response><status>success</status><message>请求成功</message><data><user><id>123</id><name>John</name><age>25</age></user><user><id>456</id><name>Jane</name><age>30</age></user></data></response>```在上述示例中,XML根元素为`<response>`,包含了三个子元素:`<status>`、`<message>`和`<data>`。
java document详解

在JAVA中使用文档对象模型DOM经验小结文档对象模型(DOM) 是一个文档标准,对于完备的文档和复杂的应用程序,DOM 提供了大量灵活性。
DOM标准是标准的。
它很强壮且完整,并且有许多实现。
这是许多大型安装的决定因素--特别是对产品应用程序,以避免在API发生改变时进行大量的改写。
以上是我在选择处理XML数据时之所以没有选择JDOM或者dom4j等其它面向对象的标准的原因,不过也由于DOM从一开始就是一种与语言无关的模型,而且它更趋向用于像C或Perl这类语言,没有利用Java的面向对象的性能,所以在使用的过程中也遇到了不少的麻烦,今天这里做一个小结。
另外,我目前使用XML主要是作为数据传输的统一格式,并统一用户界面展示的接口,应用的面并不是很广,所以使用到的DOM的内容其实不多。
在准备使用它的时候,是做了充足的准备的,也有遇到困难的准备,所以一开始就有了一个简单的工具类来封装DOM对象使用时必要的公共方法,实际证明这样做是很明智的,一个简单的创建Document 对象的操作,要是每次都需要写上5行以上代码,并且还要处理那些烦人的Exception,实在是会打击大家的积极性,所以在最初,做了一个XMLTool类,专门封装了如下的公共方法:1、 Document对象创建(包括空的Document对象创建,以一个给定Node节点作为根节点创建。
2、将一个规范的XML字符串转换成一个Document对象。
3、从物理硬盘读取一个XML文件并返回一个Document对象。
4、将一个Node对象转换成字符串。
其中每个方法都截获相关的DOM操作所抛出的异常,转换成一个RuntimeException抛出,这些异常在实际使用过程中,一般状况下其实都不会抛出,特别是象生成一个Document对象时的ParserConfigurationException、转换Node节点成字符串时要生成一个Transformer对象时的TransformerConfigurationException等等,没有必要在它们身上花时间精力。
JavaXML解析的四种方法(连载)

JavaXML解析的四种⽅法(连载)1. xml简介 XML:指可扩展标记语⾔, Extensible Markup Language;类似HTML。
XML的设计宗旨是传输数据,⽽⾮显⽰数据。
⼀个xml⽂档实例:1 <?xml version="1.0" encoding="UTF-8"?>2 <company name="Tencent" address="深圳市南⼭区">3 <department deptNo="001" name="development">4 <employee id="devHead" position="minister">许刚</employee>5 <employee position="developer">⼯程师A</employee>6 </department>7 <department deptNo="002" name="education">8 <employee position="minister" telephone="1234567">申林</employee>9 <employee position="trainee">实习⽣A</employee>10 </department>11 </company> 第⼀⾏是 XML 声明。
它定义 XML 的版本 (1.0) 和所使⽤的编码. 下⼀⾏描述⽂档的根元素:<company>开始,该根元素具有2个属性“name”,"address"。
java使用document解析xml文件

java使⽤document解析xml⽂件准备⼯作:1创建java⼯程2创建xml⽂档。
完成后看下⾯代码:import org.w3c.dom.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;public class Main {public static void main(String[] args) throws Exception {//创建⼀个⽂档解析器⼯⼚DocumentBuilderFactory fac= DocumentBuilderFactory.newInstance();//⽤上⾯的⼯⼚创建⼀个⽂档解析器DocumentBuilder builder=fac.newDocumentBuilder();//⽤上⾯的⽂档解析器解析⼀个⽂件放到document对象⾥Document doc=builder.parse("src/server.xml");//获取⽂档中节点名称为Listener的所有节点,并返回⼀个节点集合NodeList listenerList=doc.getElementsByTagName("Listener");System.out.println("⼀共有"+listenerList.getLength()+"个节点");//遍历整个集合(把所有标签名为Listener的节点⼀个⼀个拿出来for (int i=0;i<listenerList.getLength();i++){System.out.println("===========这是第"+(i+1)+"个listener节点的开始:===========");//把集合⾥的每⼀个listener节点分别拿出来Node node=listenerList.item(i);//再把上⼀个节点中的所有属性拿出来NamedNodeMap nodeMap= node.getAttributes();System.out.println("第"+(i+1)+"个节点⼀共有"+nodeMap.getLength()+"个属性");//遍历所有属性for(int j=0;j<nodeMap.getLength();j++){Node node1=nodeMap.item(j);System.out.println("第"+(j+1)+"个属性的名称是"+node1.getNodeName());System.out.println("第"+(j+1)+"个属性的值是"+node1.getNodeValue());}//获取节点的所有⼦节点,注意会把所有换⾏符也解析为⼦节点NodeList childNode=node.getChildNodes();//遍历所有⼦节点for(int k=0;k<childNode.getLength();k++){if(childNode.item(k).getNodeType()==Node.ELEMENT_NODE){//这个过滤条件是只将标签节点保留(换⾏符的节点就删去)}System.out.println("===========这是第"+(i+1)+"个节点的结束:===========");}}}为了⽅便记忆,在这⾥拆解⼀下。
xml特殊字符转义方法

xml特殊字符转义方法XML的特殊字符转义可以通过以下几种方式实现:1. 使用XML解析器内置的特殊字符转义函数,例如""表示换行符,"t"表示制表符,""表示换行符等等。
2. 使用Java中的DOM解析器或SAX解析器,通过API提供的DOM 或SAX解析器对象来获取XML文档,并使用文档对象模型(DOM)或事件模型(SAX)的特殊字符转义函数。
3. 使用第三方XML解析库,例如Java中的ElementTree、EclipseXML和SWIXML等,这些库提供了更加灵活和丰富的API,可以轻松地实现XML的特殊字符转义。
下面是一个使用Java中的DOM解析器实现XML特殊字符转义的示例代码:```javaimport java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.List;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.私营企业协会.私营企业协会Document;import org.w3c.dom.私营企业协会.私营企业协会Node;public class 私营企业协会 extends Node {public 私营企业协会Node() {super(私营企业协会Document.createDocument());String name = getNodeName();appendContentChild("协会名称", name);}public String getName() {return getNodeName().getValue();}public void setName(String name) {setNodeName(name);}public List<私营企业协会Node> getEmployees() {List<私营企业协会Node> employees = new ArrayList<>(); Node employeeNode = getFirstChild("雇员");while (employeeNode != null) {私营企业协会Node employee = (私营企业协会Node) employeeNode.那只读Subtree();employees.add(employee);employeeNode = employeeNode.那只读Subtree();}return employees;}public void appendContentToNode(String content) throws IOException {Document doc = getDOM();Element element = doc.createElement("协会");element.appendChild(appendContentToNode(content));getFirstChild("雇员").appendChild(element);}}```在这个示例代码中,我们使用了DOM解析器来获取私营企业协会的文档,并使用Node对象的get Employees()方法来获取协会的所有雇员,最后将雇员的内容添加到协会的文档中。
org.w3c.dom(javadom)解析XML文档

org.w3c.dom(javadom)解析XML⽂档位于org.w3c.dom操作XML会⽐较简单,就是将XML看做是⼀颗树,DOM就是对这颗树的⼀个数据结构的描述,但对⼤型XML⽂件效果可能会不理想⾸先来了解点Java DOM 的 API:1.解析器⼯⼚类:DocumentBuilderFactory创建的⽅法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();2.解析器:DocumentBuilder创建⽅法:通过解析器⼯⼚类来获得 DocumentBuilder db = dbf.newDocumentBuilder();3.⽂档树模型Document创建⽅法:a.通过xml⽂档 Document doc = db.parse("bean.xml"); b.将需要解析的xml⽂档转化为输⼊流 InputStream is = new FileInputStream("bean.xml");Document doc = db.parse(is);Document对象代表了⼀个XML⽂档的模型树,所有的其他Node都以⼀定的顺序包含在Document对象之内,排列成⼀个树状结构,以后对XML⽂档的所有操作都与解析器⽆关,直接在这个Document对象上进⾏操作即可;包含的⽅法:4.节点列表类NodeListNodeList代表了⼀个包含⼀个或者多个Node的列表,根据操作可以将其简化的看做为数组5.节点类NodeNode对象是DOM中最基本的对象,代表了⽂档树中的抽象节点。
但在实际使⽤中很少会直接使⽤Node对象,⽽是使⽤Node对象的⼦对象Element,Attr,Text等6.元素类Element是Node类最主要的⼦对象,在元素中可以包含属性,因⽽Element中有存取其属性的⽅法7.属性类Attr代表某个元素的属性,虽然Attr继承⾃Node接⼝,但因为Attr是包含在Element中的,但并不能将其看做是Element的⼦对象,因为Attr并不是DOM树的⼀部分基本的知识就到此结束,更加具体的⼤家可以参阅JDK API⽂档实战:1.使⽤DOM来遍历XML⽂档中的全部内容并且插⼊元素:school.xml⽂档:<?xml version = "1.0" encoding = "utf-8"?><School><Student><Name>沈浪</Name><Num>1006010022</Num><Classes>信管2</Classes><Address>浙江杭州3</Address><Tel>123456</Tel></Student><Student><Name>沈1</Name><Num>1006010033</Num><Classes>信管1</Classes><Address>浙江杭州4</Address><Tel>234567</Tel></Student><Student><Name>沈2</Name><Num>1006010044</Num><Classes>⽣⼯2</Classes><Address>浙江杭州1</Address><Tel>345678</Tel></Student><Student><Name>沈3</Name><Num>1006010055</Num><Classes>电⼦2</Classes><Address>浙江杭州2</Address><Tel>456789</Tel></Student></School>DomDemo.java1 package xidian.sl.dom;2import java.io.FileOutputStream;34import javax.xml.parsers.DocumentBuilder;5import javax.xml.parsers.DocumentBuilderFactory;67import org.apache.crimson.tree.XmlDocument;8import org.w3c.dom.Document;9import org.w3c.dom.Element;10import org.w3c.dom.NodeList;111213public class DomDemo {14/**15 * 遍历xml⽂档16 * */17public static void queryXml(){18try{19//得到DOM解析器的⼯⼚实例20 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();21//从DOM⼯⼚中获得DOM解析器22 DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();23//把要解析的xml⽂档读⼊DOM解析器24 Document doc = dbBuilder.parse("src/xidian/sl/dom/school.xml");25 System.out.println("处理该⽂档的DomImplementation对象 = "+ doc.getImplementation());26//得到⽂档名称为Student的元素的节点列表27 NodeList nList = doc.getElementsByTagName("Student");28//遍历该集合,显⽰结合中的元素及其⼦元素的名字29for(int i = 0; i< nList.getLength() ; i ++){30 Element node = (Element)nList.item(i);31 System.out.println("Name: "+ node.getElementsByTagName("Name").item(0).getFirstChild().getNodeValue());32 System.out.println("Num: "+ node.getElementsByTagName("Num").item(0).getFirstChild().getNodeValue());33 System.out.println("Classes: "+ node.getElementsByTagName("Classes").item(0).getFirstChild().getNodeValue());34 System.out.println("Address: "+ node.getElementsByTagName("Address").item(0).getFirstChild().getNodeValue());35 System.out.println("Tel: "+ node.getElementsByTagName("Tel").item(0).getFirstChild().getNodeValue());36 }3738 }catch (Exception e) {39// TODO: handle exception40 e.printStackTrace();41 }42 }43/**44 * 向已存在的xml⽂件中插⼊元素45 * */46public static void insertXml(){47 Element school = null;48 Element student = null;49 Element name = null;50 Element num = null;51 Element classes = null;52 Element address = null;53 Element tel = null;54try{55//得到DOM解析器的⼯⼚实例56 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();57//从DOM⼯⼚中获得DOM解析器58 DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();59//把要解析的xml⽂档读⼊DOM解析器60 Document doc = dbBuilder.parse("src/xidian/sl/dom/school.xml");61//得到⽂档名称为Student的元素的节点列表62 NodeList nList = doc.getElementsByTagName("School");63 school = (Element)nList.item(0);64//创建名称为Student的元素65 student = doc.createElement("Student");66//设置元素Student的属性值为23167 student.setAttribute("examId", "23");68//创建名称为Name的元素69 name = doc.createElement("Name");70//创建名称为⾹⾹的⽂本节点并作为⼦节点添加到name元素中71 name.appendChild(doc.createTextNode("⾹⾹"));72//将name⼦元素添加到student中73 student.appendChild(name);74/**75 * 下⾯的元素依次加⼊即可76 * */77 num = doc.createElement("Num");78 num.appendChild(doc.createTextNode("1006010066"));79 student.appendChild(num);8081 classes = doc.createElement("Classes");82 classes.appendChild(doc.createTextNode("眼视光5"));83 student.appendChild(classes);8485 address = doc.createElement("Address");86 address.appendChild(doc.createTextNode("浙江温州"));87 student.appendChild(address);8889 tel = doc.createElement("Tel");90 tel.appendChild(doc.createTextNode("123890"));91 student.appendChild(tel);9293//将student作为⼦元素添加到树的根节点school94 school.appendChild(student);95//将内存中的⽂档通过⽂件流⽣成insertSchool.xml,XmlDocument位于crison.jar下96 ((XmlDocument)doc).write(new FileOutputStream("src/xidian/sl/dom/insertSchool.xml"));97 System.out.println("成功");98 }catch (Exception e) {99// TODO: handle exception100 e.printStackTrace();101 }102 }103public static void main(String[] args){104//读取105 DomDemo.queryXml();106//插⼊107 DomDemo.insertXml();108 }109 }110运⾏后结果:然后到⽬录下查看⽣成的xml⽂件:打开查看内容:上⾯添加元素后输出的⽂件与之前的⽂件不是同⼀个⽂件,如果需要输出到原⽂件中,那么只要将路径改为原⽂间路径即可:src/xidian/sl/dom/school.xml2.创建XML过程与插⼊过程相似,就是Document需要创建package xidian.sl.dom;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Document;import org.w3c.dom.Element;public class CreateNewDom {/*** 创建xml⽂档* */public static void createDom(){Document doc;Element school,student;Element name = null;Element num = null;Element classes = null;Element address = null;Element tel = null;try{//得到DOM解析器的⼯⼚实例DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();//从DOM⼯⼚中获得DOM解析器DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();//创建⽂档树模型对象doc = dbBuilder.newDocument();if(doc != null){//创建school元素school = doc.createElement("School");//创建student元素student = doc.createElement("Student");//设置元素Student的属性值为231student.setAttribute("examId", "23");//创建名称为Name的元素name = doc.createElement("Name");//创建名称为⾹⾹的⽂本节点并作为⼦节点添加到name元素中name.appendChild(doc.createTextNode("⾹⾹"));//将name⼦元素添加到student中student.appendChild(name);/*** 下⾯的元素依次加⼊即可* */num = doc.createElement("Num");num.appendChild(doc.createTextNode("1006010066"));student.appendChild(num);classes = doc.createElement("Classes");classes.appendChild(doc.createTextNode("眼视光5"));student.appendChild(classes);address = doc.createElement("Address");address.appendChild(doc.createTextNode("浙江温州"));student.appendChild(address);tel = doc.createElement("Tel");tel.appendChild(doc.createTextNode("123890"));student.appendChild(tel);//将student作为⼦元素添加到树的根节点schoolschool.appendChild(student);//添加到⽂档树中doc.appendChild(school);//将内存中的⽂档通过⽂件流⽣成insertSchool.xml,XmlDocument位于crison.jar下((XmlDocument)doc).write(new FileOutputStream("src/xidian/sl/dom/createSchool.xml")); System.out.println("创建成功");}}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}public static void main(String[] args) {CreateNewDom.createDom();}}运⾏结果:DOM的操作应该还是⾮常简单明了的,掌握了没哦。
XML基础复习习题2016

一、选择题1.XML采用以下哪种数据组织结构?( C )A 星状结构B 线状结构C树状结构D网状结构2.下列关于XML文档中根元素的说法不正确的是( D )A每一个结构完整的XML文档中有且只有一个根元素B 根元素完全包括了文档中其他所有元素C 根元素的起始标记要放在其他所有元素的起始标记之前,而根元素的结束标记要放在其他所有元素的结束标记之后D 根元素不能包含属性节点3.下面哪个公司或组织制定了XML:( C )A ISOB OracleC W3CD Micrsoft4.>、<、&等在XML文档中被赋予了特殊的意义,所以在XML文档中不能直接包含这些字符,而是对这些字符采用了特殊编码,< 对应的特殊编码是:(B)A &B <C &lgt;D &quto;5.以下说法不符合XML语法规则的是( C )A)标记头和标记末的大小写一致B)元素之间要正确的嵌套C)结束标记可有可无D)每个XML文档只能有一个根元素6.以下XML片段写法正确的是( D )A <root attribute=”first”/>B <root attribute=first />C <root attribute/>D <root attribute=”first” value=”aaa”/>E <root attribute=”first” value=”aaa”>7.用于修饰属性的缺省值不包含哪一项( C )A #FIXEDB #REQUIREDC #PCDATAD #IMPLIED8.以下关于SAX的说法正确的是( B )A)使用SAX可修改XMLB)SAX是事件驱动型XML解析器C)SAX是对象模型XML解析器D)以上答案都不对9.DOM解析中,下面( A )方法可以获得XML文档节点树的根元素节点。
获取注解的所有方法

获取注解的所有方法获取注解的方法有很多,下面就介绍几种常用的获取注解的方法:1、通过Java反射获取注解:Java反射技术可以从Java的类文件中获取注解,使用该技术只需要加载Class对象,然后通过getAnnotation()方法获取注解信息,具体代码如下:Class clazz = Class.forName(className);Annotation[] annotations = clazz.getAnnotations(); //获取注解2、从已加载的类中获取注解:除了使用反射从Class文件中加载注解外,还可以从已加载的类中获取注解,主要是通过Class对象的getDeclaredAnnotations()方法获取,具体代码如下:Annotation [] annotations = class.getDeclaredAnnotations();//已加载的类获取注解3、从资源文件中获取注解:可以使用Java的URLConnection和InputStream类从资源文件中读取注解,然后使用类似getAnnotation()的方法获取注解。
4、从XML文件中获取注解:首先可以将XML文件解析成一个org.w3c.dom.Document,然后使用Document的getElementsByTagName(“annotation”)方法获取所有的注解元素,最后遍历每个注解元素,获取相应的属性值即可。
5、从数据库中获取注解:可以使用JDBC技术先从数据库中查询出所有的信息,然后用反射技术获取注解。
6、从jar文件中获取注解:jar文件包含了Java编译后的class文件,可以使用URLConnection和InputStream类从jar文件中获取class文件,然后使用反射技术获取注解信息。
7、从文本文件中获取注解:文本文件也可以包含注解信息,可以使用Reader类的read()方法将文本文件的内容读取出来,然后进行解析,获取注解信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想首先来了解点Java DOM 的API:1.解析器工厂类:DocumentBuilderFactory创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();2.解析器:DocumentBuilder创建方法:通过解析器工厂类来获得DocumentBuilder db = dbf.newDocumentBuilder();3.文档树模型Document创建方法:a.通过xml文档 Document doc = db.parse("bean.xml"); b.将需要解析的xml文档转化为输入流InputStream is = new FileInputStream("bean.xml");Document doc = db.parse(is);Document对象代表了一个XML文档的模型树,所有的其他Node都以一定的顺序包含在Document对象之内,排列成一个树状结构,以后对XML文档的所有操作都与解析器无关,直接在这个Document对象上进行操作即可;包含的方法:4.节点列表类NodeListNodeList代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组5.节点类NodeNode对象是DOM中最基本的对象,代表了文档树中的抽象节点。
但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等6.元素类Element是Node类最主要的子对象,在元素中可以包含属性,因而Element中有存取其属性的方法7.属性类Attr代表某个元素的属性,虽然Attr继承自Node接口,但因为Attr是包含在Element中的,但并不能将其看做是Element的子对象,因为Attr并不是DOM树的一部分基本的知识就到此结束,更加具体的大家可以参阅JDK API文档实战:1.使用DOM来遍历XML文档中的全部内容并且插入元素:school.xml文档:<?xml version = "1.0" encoding = "utf-8"?><School><Student><Name>沈浪</Name><Num>1006010022</Num><Classes>信管2</Classes><Address>浙江杭州3</Address><Tel>123456</Tel></Student><Student><Name>沈1</Name><Num>1006010033</Num><Classes>信管1</Classes><Address>浙江杭州4</Address><Tel>234567</Tel></Student><Student><Name>沈2</Name><Num>1006010044</Num><Classes>生工2</Classes><Address>浙江杭州1</Address><Tel>345678</Tel></Student><Student><Name>沈3</Name><Num>1006010055</Num><Classes>电子2</Classes><Address>浙江杭州2</Address><Tel>456789</Tel></Student></School>DomDemo.javapackage xidian.sl.dom;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class DomDemo {/*** 遍历xml文档* */public static void queryXml(){try{//得到DOM解析器的工厂实例DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();//从DOM工厂中获得DOM解析器DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();//把要解析的xml文档读入DOM解析器Document doc = dbBuilder.parse("src/xidian/sl/dom/school.xml");System.out.println("处理该文档的DomImplementation对象 = "+doc.getImplementation());//得到文档名称为Student的元素的节点列表NodeList nList = doc.getElementsByTagName("Student");//遍历该集合,显示结合中的元素及其子元素的名字for(int i = 0; i< nList.getLength() ; i ++){Element node = (Element)nList.item(i);System.out.println("Name: "+node.getElementsByTagName("Name").item(0).getFirstChild().getNodeValue());System.out.println("Num: "+node.getElementsByTagName("Num").item(0).getFirstChild().getNodeValue());System.out.println("Classes: "+node.getElementsByTagName("Classes").item(0).getFirstChild().getNodeValue());System.out.println("Address: "+node.getElementsByTagName("Address").item(0).getFirstChild().getNodeValue());System.out.println("Tel: "+node.getElementsByTagName("Tel").item(0).getFirstChild().getNodeValue());}}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}/*** 向已存在的xml文件中插入元素* */public static void insertXml(){Element school = null;Element student = null;Element name = null;Element num = null;Element classes = null;Element address = null;Element tel = null;try{//得到DOM解析器的工厂实例DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();//从DOM工厂中获得DOM解析器DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();//把要解析的xml文档读入DOM解析器Document doc = dbBuilder.parse("src/xidian/sl/dom/school.xml");//得到文档名称为Student的元素的节点列表NodeList nList = doc.getElementsByTagName("School");school = (Element)nList.item(0);//创建名称为Student的元素student = doc.createElement("Student");//设置元素Student的属性值为231student.setAttribute("examId", "23");//创建名称为Name的元素name = doc.createElement("Name");//创建名称为香香的文本节点并作为子节点添加到name元素中name.appendChild(doc.createTextNode("香香"));//将name子元素添加到student中student.appendChild(name);/*** 下面的元素依次加入即可* */num = doc.createElement("Num");num.appendChild(doc.createTextNode("1006010066"));student.appendChild(num);classes = doc.createElement("Classes");classes.appendChild(doc.createTextNode("眼视光5"));student.appendChild(classes);address = doc.createElement("Address");address.appendChild(doc.createTextNode("浙江温州"));student.appendChild(address);tel = doc.createElement("Tel");tel.appendChild(doc.createTextNode("123890"));student.appendChild(tel);//将student作为子元素添加到树的根节点schoolschool.appendChild(student);//将内存中的文档通过文件流生成insertSchool.xml,XmlDocument位于crison.jar下 ((XmlDocument)doc).write(newFileOutputStream("src/xidian/sl/dom/insertSchool.xml"));System.out.println("成功");}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}public static void main(String[] args){//读取DomDemo.queryXml();//插入DomDemo.insertXml();}}运行后结果:然后到目录下查看生成的xml文件:打开查看内容:上面添加元素后输出的文件与之前的文件不是同一个文件,如果需要输出到原文件中,那么只要将路径改为原文间路径即可:src/xidian/sl/dom/school.xml2.创建XML过程与插入过程相似,就是Document需要创建package xidian.sl.dom;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Document;import org.w3c.dom.Element;public class CreateNewDom {/*** 创建xml文档* */public static void createDom(){Document doc;Element school,student;Element name = null;Element num = null;Element classes = null;Element address = null;Element tel = null;try{//得到DOM解析器的工厂实例DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();//从DOM工厂中获得DOM解析器DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();//创建文档树模型对象doc = dbBuilder.newDocument();if(doc != null){//创建school元素school = doc.createElement("School");//创建student元素student = doc.createElement("Student");//设置元素Student的属性值为231student.setAttribute("examId", "23");//创建名称为Name的元素name = doc.createElement("Name");//创建名称为香香的文本节点并作为子节点添加到name元素中name.appendChild(doc.createTextNode("香香"));//将name子元素添加到student中student.appendChild(name);/*** 下面的元素依次加入即可* */num = doc.createElement("Num");num.appendChild(doc.createTextNode("1006010066"));student.appendChild(num);classes = doc.createElement("Classes");classes.appendChild(doc.createTextNode("眼视光5"));student.appendChild(classes);address = doc.createElement("Address");address.appendChild(doc.createTextNode("浙江温州"));student.appendChild(address);tel = doc.createElement("Tel");tel.appendChild(doc.createTextNode("123890"));student.appendChild(tel);//将student作为子元素添加到树的根节点schoolschool.appendChild(student);//添加到文档树中doc.appendChild(school);//将内存中的文档通过文件流生成insertSchool.xml,XmlDocument位于crison.jar下 ((XmlDocument)doc).write(newFileOutputStream("src/xidian/sl/dom/createSchool.xml"));System.out.println("创建成功");}}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}public static void main(String[] args) {CreateNewDom.createDom();}}运行结果:DOM的操作应该还是非常简单明了的,掌握了没哦。