java操作xm——添加、修改、删除、遍历
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——添加、修改、删除、遍历的更多相关文章
- 【转】C#添加修改删除文件文件夹大全
[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...
- 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件
第三章 建议学习时间8小时 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...
- SpringBoot定时任务升级篇(动态添加修改删除定时任务)
需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...
- JavaWeb_day03_员工信息添加修改删除
day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...
- Web 1三级联动 下拉框 2添加修改删除 弹框
Web 三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- java操作elasticsearch实现查询删除和查询所有
后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...
- python对MySQL进行添加修改删除以及字符串的操作
# coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...
- MySQL 字段常用操作 添加,修改,删除,调整字段顺序
整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型 默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_sou ...
- Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作
1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
随机推荐
- 【问题&解决】sql2012安装时卡在正在启动操作系统功能"NetFx3"上不动的解决办法
安装完windows8 后开始安装sql2012,安装过程中停在“正在启动操作系统功能"NetFx3"”不动了,很是着急,于是上网查了一下资料,原来NetFx3指的是Framewo ...
- c++仿函数 functor
内容整理自国外C++教材 先考虑一个简单的例子:假设有一个vector<string>,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样 ...
- 合工大OJ 1337 一加二减三
Description 题目描述:给一个串,形如一+二-三,求值 Input 第一行为一个正整数T,表示数据的组数,接下来有T行每行都是一个形如一+二-三的串,一,二,三均为正整数 Output 对于 ...
- POJ 1410 Intersection --几何,线段相交
题意: 给一条线段,和一个矩形,问线段是否与矩形相交或在矩形内. 解法: 判断是否在矩形内,如果不在,判断与四条边是否相交即可.这题让我发现自己的线段相交函数有错误的地方,原来我写的线段相交函数就是单 ...
- RMQ之ST算法模板
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; ; ],M ...
- Win2003_IIS+PHP+MYSQL 全能服务器配置
WIN2003_IIS+PHP+mysql最新版_全能服务器配置 本次配置PHP的服务器环境:Windows2003+IIS6+ASP+PHP5+MySQL5整个配置过程需要是使用拥有管理员权限的系统 ...
- tp登录方法
先根据输入的名字检测是否存在数据表中,如果有继续进一步验证密码,除了select(),find()可以查询数据外,还可以用getByXxx()指定数据表字段查询, 比如数据表有username字段,就 ...
- usb驱动开发9之设备描述符
前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),配置描述符,最后分析设备如何包括这些描述符.首先记住,在usb的世界里,设备大于配置,配置大于接口,接 ...
- linux测速软件speedtest-cli
linux测速软件: https://github.com/sivel/speedtest-cli 以下是我在gentoo上测的
- GO To Definition的背后操作【VS2015 C#】
使用VS开发U3D项目时,去察看某个变量的声明,比如某组件的gameObject变量,会看到如下代码 一看似乎有点晕,这代码什么意思啊,就一个 public GameObject gameObject ...