博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xml解析demo使用
阅读量:4328 次
发布时间:2019-06-06

本文共 5875 字,大约阅读时间需要 19 分钟。

package lianxi;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
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;

public class Demo {

private static Document docu;
public static void main(String[] args) throws Exception {
read();
//add();
delete();
show();
save();

}

private static void read() throws Exception {
//创建DocumentBuilderFactor,工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//2.解析器工厂对象创建解析器对象
DocumentBuilder builder=factory.newDocumentBuilder();
//添加
docu =builder.parse("src/na.xml");
}
private static void show(){
//遍历节点
NodeList brad=docu.getElementsByTagName("学生");
for(int i=0;i<brad.getLength();i++){
Node nod=(Node)brad.item(i);
//把节点转化为元素节点
Element ele=(Element)nod;
String str=ele.getTagName();
NodeList types=ele.getChildNodes();//查询下面的子节点
for(int j=0;j<types.getLength();j++){
Node node=(Node)types.item(j);
if(node.getNodeType()==Node.ELEMENT_NODE){
Element elemen=(Element)node;
String str1=elemen.getTextContent();
System.out.println(elemen.getNodeName()+str1);
}
}
}
}
private static void save() throws Exception{
//保存xml借助转化器
TransformerFactory factory=TransformerFactory.newInstance();
//indent-number表示缩进的位置
factory.setAttribute("indent-number", 4);
//转换器得到对象
Transformer former=factory.newTransformer();
//这里设置一下Outputkeys的关键字
former.setOutputProperty(OutputKeys.INDENT,"YES");
DOMSource source=new DOMSource(docu);//这个需要传入一个xml文件
//new OutputStreamWriter(out,utf-8);
StreamResult result=new StreamResult(new OutputStreamWriter(new FileOutputStream("src/na.xml"),"utf-8"));
//调用其中一个方法transform(source,result)
former.transform(source, result);
}
private static void add() throws Exception{
Element element=docu.createElement("学生");
//可以使用getAttribute来添加一个属性
element.setAttribute("年级","大四");
docu.getElementsByTagName("班级").item(0).appendChild(element);
save();
}
private static void delete() throws Exception{
NodeList brands=docu.getElementsByTagName("学生");//找到标志
//for(int i=0;i<brands.getLength();i++){
Node brand=brands.item(1);
//节点转化为元素节点
Element ele=(Element)brand;
//if(ele.getAttribute("name").equals("小米9")){
//它自己没有权力删除自己,所有先找到父节点,通过父节点来删除
ele.getParentNode().removeChild(ele);
//}
// }
//save();
}
}

 

package cn.xml;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
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;

public class Xmlfactor {
private Document dd=null;
public static void main(String[] args) {
Xmlfactor ss=new Xmlfactor();
try {
ss.GetDocument();
//ss.add();
ss.delete();
ss.show();
//ss.update();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private void GetDocument() throws Exception{
DocumentBuilderFactory doc= DocumentBuilderFactory.newInstance();
DocumentBuilder builder=doc.newDocumentBuilder();
dd=builder.parse("First.xml");
}
private void show(){
//获取节点集合 getElementsByTagname
NodeList brand=dd.getElementsByTagName("size");
for(int i=0;i<brand.getLength();i++){
Node node=brand.item(i);//类似于数组,使用item遍历
// System.out.println(node);
//从节点准换为具体的元素点
Element elebrand=(Element)node;
String attr=elebrand.getAttribute("aa");//遍历元素点的内容
NodeList types=elebrand.getChildNodes();
System.out.println(attr);
//接下来要查找brand元素节点里的子节点: getChildNodes():
for(int j=0;j<types.getLength();j++){
Node typenode=types.item(j);
//判断是元素节点,因为可能是其他节点
if(typenode.getNodeType()==Node.ELEMENT_NODE){
//把节点转化为元素节点
Element eleType=(Element)typenode;
String type=eleType.getAttribute("name");
System.out.println(attr+type);
}
}
}
}
private void save() throws Exception{
//保存xml,需要借助转换器
TransformerFactory factor=TransformerFactory.newInstance();
//indent-number表示缩进的位置
factor.setAttribute("indent-number", 4);
//转换器工工厂得到准换器对象
Transformer tran=factor.newTransformer();
//这里设置一下Outputkeys的关键字
tran.setOutputProperty(OutputKeys.INDENT, "YES");
//调用其中一个方法transform(source,result)
DOMSource souce=new DOMSource(dd);
//new OutputStreamWriter(out,utf-8);
StreamResult result=new StreamResult(new OutputStreamWriter(new FileOutputStream("First.xml"),"utf-8"));
tran.transform(souce, result);
}
private void add() throws Exception{
//创建一个元素集createElement
Element element=dd.createElement("size");
//给brand设置一个属性 setAttribute
element.setAttribute("aa", "asdasd");
//创建一个元素<Size tt="sdf">
//将eleme作为Element的子元素
Element ele1=dd.createElement("Type");
ele1.setAttribute("name", "小米9");
element.appendChild(ele1);
//将新建的元素放进根目录中
dd.getElementsByTagName("cloth").item(1).appendChild(element);
save();
}
//添加一个属性id
private void update() throws Exception{
//首先获取指定标志
NodeList brands=dd.getElementsByTagName("size");
//遍历
for(int i=0;i<brands.getLength();i++){
//得到每一个元素点
Node brand=brands.item(i);
//把节点转化为元素节点
Element ele=(Element)brand;
ele.setAttribute("id",i+"");
}
save();
}
private void delete() throws Exception{
NodeList brands=dd.getElementsByTagName("Type");//找到标志
for(int i=0;i<brands.getLength();i++){
Node brand=brands.item(i);
//节点转化为元素节点
Element ele=(Element)brand;
if(ele.getAttribute("name").equals("小米9")){
//它自己没有权力删除自己,所有先找到父节点,通过父节点来删除
ele.getParentNode().removeChild(ele);
}
}
save();
}

}

 

转载于:https://www.cnblogs.com/liuchunyong/p/10430104.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-02 springcloud网关组件zuul
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-4.后端项目分层分包及资源文件处理...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
Linux下Nginx安装
查看>>
LVM扩容之xfs文件系统
查看>>
Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
查看>>
代码片段收集
查看>>
vue-cli3创建项目时报错
查看>>
输入1-53周,输出1-53周的开始时间和结束时间
查看>>
实验二
查看>>