java操作DOM节点的添加,删除,修改

下面我们开始对此xml添加,删除,修改:方法一

import java.io.File;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.*;

import org.xml.sax.SAXException;

public class DOMConvert

{

public static void main(String[] args)

{

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

try

{

DocumentBuilder db=dbf.newDocumentBuilder();

Document doc=db.parse("students.xml");

//------------------添加节点------------------

//创建表示一个学生信息的各元素节点

Element eltStu=doc.createElement("student");

Element eltName=doc.createElement("name");

Element eltAge=doc.createElement("age");

//创建元素的sn属性节点

Attr attr=doc.createAttribute("sn");

attr.setValue("03");

//创建代表学生信息的文本节点

Text txtName=doc.createTextNode("王五");

Text txtAge=doc.createTextNode("19");

//将文本节点添加为对应的元素节点的子节点

eltName.appendChild(txtName);

eltAge.appendChild(txtAge);

//将name和age节点添加为student节点的子节点

eltStu.appendChild(eltName);

eltStu.appendChild(eltAge);

//为元素添加sn属性节点

eltStu.setAttributeNode(attr);

//得到XML文档的根元素。

Element eltRoot=doc.getDocumentElement();

//将student节点添加为根元素的子节点

eltRoot.appendChild(eltStu);

NodeList nl=doc.getElementsByTagName("student");

//------------------删除节点------------------

Node nodeDel=nl.item(0);

nodeDel.getParentNode().removeChild(nodeDel);

//------------------修改节点------------------

//注意:NodeList对象是动态的,所以前面删除节点的操作会影响到NodeList对象,

//NodeList中的节点对象会重新进行排列,此时,索引为0的节点是先前节点

//列表中索引为1的节点。

Element eltChg=(Element)nl.item(0);

Node nodeAgeChg=eltChg.getElementsByTagName("age").item(0);

nodeAgeChg.getFirstChild().setNodeValue("22");

//输出修改后的学生信息。

for(int i=0;i

{

Element elt=(Element)nl.item(i);

System.out.println("编号:"+elt.getAttribute("sn"));

Node nodeName=elt.getElementsByTagName("name").item(0);

Node nodeAge=elt.getElementsByTagName("age").item(0);

String name=nodeName.getFirstChild().getNodeValue();

String age=nodeAge.getFirstChild().getNodeValue();

System.out.print("姓名:");

System.out.println(name);

System.out.print("年龄:");

System.out.println(age);

System.out.println("------------------------------------------");

}

}

catch(ParserConfigurationException e){e.printStackTrace();}

catch(SAXException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

}

}

方法二:使用XSL转换实现

import java.io.File;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

import org.xml.sax.SAXException;

public class DOMConvert2

{

public static void main(String[] args)

{

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

try

{

DocumentBuilder db=dbf.newDocumentBuilder();

Document doc=db.parse("students.xml");

Element eltStu=doc.createElement("student");

Element eltName=doc.createElement("name");

Element eltAge=doc.createElement("age");

Attr attr=doc.createAttribute("sn");

attr.setValue("03");

Text txtName=doc.createTextNode("王五");

Text txtAge=doc.createTextNode("19");

eltName.appendChild(txtName);

eltAge.appendChild(txtAge);

eltStu.appendChild(eltName);

eltStu.appendChild(eltAge);

eltStu.setAttributeNode(attr);

Element eltRoot=doc.getDocumentElement();

eltRoot.appendChild(eltStu);

NodeList nl=doc.getElementsByTagName("student");

Node nodeDel=(Element)nl.item(0);

nodeDel.getParentNode().removeChild(nodeDel);

Element eltChg=(Element)nl.item(0);

Node nodeAgeChg=eltChg.getElementsByTagName("age").item(0);

nodeAgeChg.getFirstChild().setNodeValue("22");

//利用文档节点创建一个DOM输入源

DOMSource source=new DOMSource(doc);

//以converted.xml文件构造一个StreamResult对象,用于保存转换后结果。

StreamResult result=new StreamResult(new File("converted.xml"));

//得到转换器工厂类的实例

TransformerFactory tff = TransformerFactory.newInstance();

//创建一个新的转换器,用于执行恒等转换,

//即直接将DOM输入源的内容复制到结果文档中。

Transformer tf = tff.newTransformer();

//执行转换

tf.transform(source, result);

}

catch(ParserConfigurationException e){e.printStackTrace();}

catch(SAXException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

catch(TransformerConfigurationException e){e.printStackTrace();}

catch(TransformerException e){e.printStackTrace();}

}

}

//students.xml

张三

18

李四

20

java操作dom节点的添加_java操作DOM节点的添加,删除,修改相关推荐

  1. java dom获取属性值_java – 获取dom节点的属性

    我试图获取一个xml节点的属性示例: 我想获取car节点的name属性. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ...

  2. java对es做聚合查询_java操作elasticsearch实现聚合查询

    1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...

  3. java clob类型怎么插入数据库_java操作数据库中clob类型 之插入和查询

    一.插入 1)对于clob字段,首先插入empty_clob(): String sql = " insert into batchintfloadlog (centercode,filen ...

  4. java dom读写xml文件_java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...

  5. java在图片下方写文字_Java画图给图片底部添加文字标题

    Java画图 给图片底部添加文字标题 需求给图片底部添加文字编号 import java.awt.Color; import java.awt.Font; import java.awt.Graphi ...

  6. java在文件的后面添加_java 在file的尾部添加数据的两种方法总结

    java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...

  7. java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片

    java从前端获取参数添加到图片后返回整张图片 以后为整个servlet代码,请自行加入到j2ee工程. import java.awt.Color; import java.awt.Font; im ...

  8. java pdf水印排布问题_java实现图片和pdf添加铺满文字水印

    依赖jar包 com.itextpdf itextpdf 5.3.2 com.itextpdf itext-asian 5.2.0 一,图片添加铺满水印 ======================= ...

  9. java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法

    1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...

最新文章

  1. python lambda 逻辑_Python之lambda表达式和内置函数
  2. 前端总线,外频及单位GT/s,MHz区别
  3. openresty开发系列19--lua的table操作
  4. javabean自定义组件
  5. Srping MVC入门推荐
  6. 反转!物联网火爆,开发者却很难入门?
  7. 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
  8. java中关于时间的格式化
  9. 【Pytorch】Pytorch常见的坑汇总
  10. 第四季-专题21-USB驱动程序设计
  11. editplus编辑c语言,使用EditPlus编程软件学习C/C++编程
  12. 如何修改Proteus的Licence
  13. sqlmap之tamper绕过
  14. 一个 Python Bug 干倒了估值 1.6 亿美元的公司
  15. Easy Deep Learning——卷积层
  16. 大家来学VIM(一个历久弥新的编辑器)
  17. 通过HFS低成本搭建NAS,并内网穿透实现公网访问 1/2
  18. 【Matlab】错误使用 classify (line 233) The pooled covariance matrix of TRAINING must be positive definite.
  19. thumbnailator 压缩图片
  20. [Android]安卓上传下载文件

热门文章

  1. python项目实战:20行代码画一朵好看又有趣的小花花
  2. CSDN开源夏令营 百度数据可视化实践 ECharts(8)
  3. Ways to 优化JAVA程序设计和编码,提高JAVA性能
  4. Linux执行命令时遇到的些问题
  5. 薛老师软考高项学员:2016年4月27日作业
  6. Android开发自定义的View
  7. BS-XX-042 基于SSM实现人事管理系统
  8. 2021fall Broadway Tech校招
  9. 通过Spark listener实现Direct模式读取Kafaka数据
  10. SQL查询一个表中另外一个表不存在的数据