Java知识积累3-XML的DOM解析修改和删除方法
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class RemoveNodeTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc=builder.parse(RemoveNodeTest.class.getResourceAsStream("student.xml"));
Element studentElenent=doc.createElement("student");
studentElenent.setAttribute("id", "jredu003");
Element name=doc.createElement("name");
Text nameValue=doc.createTextNode("xiaohuang");
name.appendChild(nameValue);
Element age=doc.createElement("age");
Text ageValue=doc.createTextNode("20");
age.appendChild(ageValue);
studentElenent.appendChild(name);
studentElenent.appendChild(age);
Element root = doc.getDocumentElement();
NodeList studentNodes = root.getChildNodes();
NodeList haha=root.getElementsByTagName("name");
for (int i = 0; i < studentNodes.getLength(); i++) {
Node node = studentNodes.item(i); // 因为空格也算是元素,所以要处理,不输出空格元素
Node node1=haha.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
String id = node.getAttributes().getNamedItem("id")
.getNodeValue();
/* if(id.equals("003")){
doc.getDocumentElement().replaceChild(studentElenent, node); //修改
doc.getDocumentElement().removeChild(node); //删除
}*/
//删除中间的结点方式相同
System.out.println(id);
NodeList childs = node.getChildNodes();
for (int j = 0; j < childs.getLength(); j++) {
Node nodee = childs.item(j);
if (nodee.getNodeType() == Node.ELEMENT_NODE) {
String Aname = nodee.getFirstChild().getNodeValue();
if(Aname.equals("张三")){
nodee.setTextContent("hahah");
nodee.getParentNode().removeChild(nodee); //删除单个中间结点的方法
} //修改中间值的方法
System.out.println(Aname);
} else if (nodee.getNodeName().equals("age")) {
String Aage = nodee.getFirstChild().getNodeValue();
System.out.println(Aage);
}
}
}
}
Transformer transformer=TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(doc),
new StreamResult(new File("c:\\a.xml")));
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Java知识积累3-XML的DOM解析修改和删除方法的更多相关文章
- Java知识积累-XML的DOM解析修改和删除方法
import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder;import jav ...
- Java XML DOM解析范例源码
下边内容内容是关于Java XML DOM解析范例的内容.import java.io.InputStream; import java.util.ArrayList; import java.uti ...
- 用java操作XML文件(DOM解析方式)
XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DO ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- java解析XML之DOM解析和SAX解析(包含CDATA的问题)
Dom解析功能强大,可增删改查,操作时会将XML文档读到内存,因此适用于小文档: SAX解析是从头到尾逐行逐个元素解析,修改较为不便,但适用于只读的大文档:SAX采用事件驱动的方式解析XML.如同在电 ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- 使用jaxp对比xml进行DOM解析
/*DOM解析编程 •遍历所有节点 •查找某一个节点 •删除结点 •更新结点 •添加节点 /* package cn.itcast.jaxp; import java.io.File; import ...
- XML之DOM解析模型
<?xml version= "1.0" encoding = "UTF-8"> <articles> <article cate ...
- mybatis源码-解析配置文件(一)之XML的DOM解析方式
目录 简介 Java 中 XML 文件解析 解析方式 DOM 解析 XML 新建 XML 文件 DOM 操作相关类 Java 读取 XML 文件 一起学 mybatis @ 简介 在之前的文章< ...
随机推荐
- postgresql修炼之道学习笔记(2)
随后的章节 介绍了基础的sql,这个我略过了,我喜欢在开发的时候,慢慢的研究,毕竟有oracle的基础. 现在,学习psql工具 使用create database创建数据库的时候,出现如下问题: ...
- Asp.net MVC5 框架揭秘 S412 实例解析 – 绝妙的扩展 模式的胜利
Asp.net MVC5 框架是个 开源的,处处可扩展的框架. 蒋先生 在他的这本书里 对如何理解框架,如何扩展框架, 给出了大量的说明和实例. 先上效果图 大部分做传统BS 的同学看到这个页面,脑海 ...
- infoq - neo4j graph db
My name is Charles Humble and I am here at QCon New York 2014 with Ian Robinson. Ian, can you introd ...
- c#的逻辑运算符重载
不光是C++,实际上C#中同样可以对操作符重载.如:namespace Com.EVSoft.Math{ public class Vector3:BaseObject { ... . ...
- linux下使用远程图形界面
1. 用xrdp的方式(客户端就是windows下的远程桌面程序) http://jingyan.baidu.com/article/d3b74d64bdab5d1f76e60951.html 2. ...
- oracle优化:避免全表扫描(高水位线)
如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的.而是扫描高水位线一下的所有块.有的时候有人经常说,我的表也不大呀,怎么 ...
- ABP dynamic API
打开ABP的事例项目SimpleTaskSystem.WebSpaAngular 中LayoutView <!-- Dynamic scripts of ABP system (They are ...
- Upnp资料整理
系统,软件和路由器都要打开upnp功能. windows7下,分别启动 function discovery resources publication; Upnp device host; SSDp ...
- [To do]Appx Package installed, can't start at first time
When installed partition tool & mkrcvcd as windows store app. it can't start at first time. the ...
- jquery_ui_api中文
http://files.cnblogs.com/files/xjyggd/JQuery_UI_API.rar