java操作dom节点的添加_java操作DOM节点的添加,删除,修改
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节点的添加,删除,修改相关推荐
- java dom获取属性值_java – 获取dom节点的属性
我试图获取一个xml节点的属性示例: 我想获取car节点的name属性. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ...
- java对es做聚合查询_java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java clob类型怎么插入数据库_java操作数据库中clob类型 之插入和查询
一.插入 1)对于clob字段,首先插入empty_clob(): String sql = " insert into batchintfloadlog (centercode,filen ...
- java dom读写xml文件_java通过dom读写xml文件
java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...
- java在图片下方写文字_Java画图给图片底部添加文字标题
Java画图 给图片底部添加文字标题 需求给图片底部添加文字编号 import java.awt.Color; import java.awt.Font; import java.awt.Graphi ...
- java在文件的后面添加_java 在file的尾部添加数据的两种方法总结
java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...
- java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片
java从前端获取参数添加到图片后返回整张图片 以后为整个servlet代码,请自行加入到j2ee工程. import java.awt.Color; import java.awt.Font; im ...
- java pdf水印排布问题_java实现图片和pdf添加铺满文字水印
依赖jar包 com.itextpdf itextpdf 5.3.2 com.itextpdf itext-asian 5.2.0 一,图片添加铺满水印 ======================= ...
- java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法
1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...
最新文章
- python lambda 逻辑_Python之lambda表达式和内置函数
- 前端总线,外频及单位GT/s,MHz区别
- openresty开发系列19--lua的table操作
- javabean自定义组件
- Srping MVC入门推荐
- 反转!物联网火爆,开发者却很难入门?
- 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
- java中关于时间的格式化
- 【Pytorch】Pytorch常见的坑汇总
- 第四季-专题21-USB驱动程序设计
- editplus编辑c语言,使用EditPlus编程软件学习C/C++编程
- 如何修改Proteus的Licence
- sqlmap之tamper绕过
- 一个 Python Bug 干倒了估值 1.6 亿美元的公司
- Easy Deep Learning——卷积层
- 大家来学VIM(一个历久弥新的编辑器)
- 通过HFS低成本搭建NAS,并内网穿透实现公网访问 1/2
- 【Matlab】错误使用 classify (line 233) The pooled covariance matrix of TRAINING must be positive definite.
- thumbnailator 压缩图片
- [Android]安卓上传下载文件