package com.xml.zh;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.w3c.dom.*;
public class XmlTest1{ /**
* 使用dom技术对xml进行解析
* @param args
* 从这里我发现: Node 是 Element, document的父类, Element类主要是
* 增加,删除,修改,返回 等。document 创建 xml中的对象
* 例:document.getElementById();方法。
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
//创建一个documentBuilderFactory实例
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//创建一个documentBuilder
DocumentBuilder db=dbf.newDocumentBuilder();
//指定是那个xml文件
Document document = db.parse("src/class.xml");
//list(document);
//red(document);
update(document);
upda(document);
}
//修改
public static void update(Document doc){
//修改元素内容
Element ele = (Element)doc.getElementsByTagName("mingzi").item(0);
ele.setTextContent("xiaohai"); //修改属性
Element element = (Element)doc.getElementsByTagName("xuesheng").item(0);
element.setAttribute("sex", "nv");
} //删除学生
public static void del(Document doc){
Node node = doc.getElementsByTagName("xuesheng").item(0);
//node.getParentNode().removeChild(node);
//删除属性
Element ele = (Element)node;
ele.removeAttribute("sex");
} //添加学生到xml
public static void add(Document doc){
//取出这个元素
Element element = doc.createElement("xuesheng"); //添加属性
element.setAttribute("sex", "vc"); Element element_name = doc.createElement("mingzi");
element_name.setTextContent("xiaoming");
Element element_nianling = doc.createElement("nianling");
element_nianling.setTextContent("23");
Element element_jieshao = doc.createElement("jieshao");
element_jieshao.setTextContent("gi sh");
element.appendChild(element_name);
element.appendChild(element_nianling);
element.appendChild(element_jieshao); //添加这个元素
doc.getDocumentElement().appendChild(element); }
//更新java在xml文件中操作的内容
public static void upda(Document doc) throws Exception{
//创建一个TransformerFactory实例
TransformerFactory tff = TransformerFactory.newInstance();
//通过TransformerFactory 得到一个转换器
Transformer tf = tff.newTransformer();
//通过Transformer类的方法 transform(Source xmlSource, Result outputTarget)
//将 XML Source 转换为 Result。
tf.transform(new DOMSource(doc), new StreamResult("src/class.xml"));
} //遍历xml文件的元素
public static void list(Node node){
if(node.getNodeType()==Node.ELEMENT_NODE)
System.out.println(node.getNodeName());
//得到该结点的子结点
NodeList nodelist = node.getChildNodes(); for(int i=0;i<nodelist.getLength();i++){
Node n = (Node) nodelist.item(i);
list(n);
}
}
//获取document对象的 元素的 文本
public static void red(Document docu){
NodeList nodelist = docu.getElementsByTagName("xuesheng");
Element element = (Element)nodelist.item(0);
System.out.println(element.getAttribute("sex"));
System.out.println(element.getTextContent());
}
}

java操作xm——添加、修改、删除、遍历的更多相关文章

  1. 【转】C#添加修改删除文件文件夹大全

    [转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...

  2. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  3. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...

  4. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  5. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  6. java操作elasticsearch实现查询删除和查询所有

    后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...

  7. python对MySQL进行添加修改删除以及字符串的操作

    # coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...

  8. MySQL 字段常用操作 添加,修改,删除,调整字段顺序

    整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型  默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_sou ...

  9. Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作

    1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

随机推荐

  1. HBase性能调优

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  2. css3属性column知多少

    CSS3 可以将文本内容设计成像报纸一样的多列布局.像下面这样: 这样的布局称为"多列布局". 对多列属性分别进行学习: 对于 column 的所有属性,ie10+ 支持,fire ...

  3. Linux与Windows 解压乱码 UTF8BOM读取问题

    Linux 与 Windows 文件乱码问题 这几天需要在linux下用CNN跑数据,但是把数据和数据列表list上传到linux下时却出现了不少乱码的问题.将这两天碰到的编码问题简单的总结一下. 1 ...

  4. 【软件使用】用IntelliJ IDEA开发Android程序图解

    博主这里使用的最新的14.0.3版本,下载地址:http://www.jetbrains.com/idea/, 下载后直接安装就可以了. 环境: OS:Win 8 IDE:IntelliJ IDEA ...

  5. 关于JavaScipt对象的基本知识

    关于JavaScipt对象的基本知识 JavaScript是运用“对象化编程”的,又叫“面向对象编程”的.所谓“对象化编程”,意义是把JavaScript能涉及的领域划分成各种对象,对象后面还连续划分 ...

  6. 半径无关单核单线程最快速高斯模糊实现(附完整C代码)

    之前,俺也发过不少快速高斯模糊算法. 俺一般认为,只要处理一千六百万像素彩色图片,在2.2GHz的CPU上单核单线程超过1秒的算法,都是不快的. 之前发的几个算法,在俺2.2GHz的CPU上耗时都会超 ...

  7. 我的第一篇博客--SQL小语句

    开通了博客,拥有了属于自己的小小天地.先写一篇今儿刚学到的 1 remove mirroring relationship alter database datab_name set partner ...

  8. 如何利用python模仿浏览器进行网页爬取?

    http://wwwsearch.sourceforge.net/mechanize/ http://www.ibm.com/developerworks/cn/linux/l-python-mech ...

  9. HDU 5057 Argestes and Sequence --树状数组(卡内存)

    题意:给n个数字,每次两种操作: 1.修改第x个数字为y. 2.查询[L,R]区间内第D位为P的数有多少个. 解法:这题当时被卡内存了,后来看了下别人代码发现可以用unsigned short神奇卡过 ...

  10. 线程操作案例--生产者与消费者,Object类对线程的支持

    本章目标 1)加深对线程同步的理解 2)了解Object类中对线程的支持方法. 实例 生产者不断生产,消费者不断消费产品. 生产者生产信息后将其放到一个区域中,之后消费者从区域中取出数据. 既然生产的 ...