解析XML文件并且进行增删改查操作
来源:互联网 发布:金铅笔网络运营 编辑:程序博客网 时间:2024/05/16 06:17
phoneinfo.xml文件:<?xml version="1.0" encoding="UTF-8" standalone="no"?><phoneinfo><brand id="0" name="小米"><type name="MI5"/><type name="NOTE"/><type name="MI5S"/></brand><brand id="1" name="华为"><type name="M1"/><type name="荣耀8"/><type name="荣耀8puls"/></brand><brand id="2" name="苹果"> <type name="iphone7"/> <type name="iphone6"/> </brand></phoneinfo>解析XML文件,并且增删改查操作:package com.hfxt;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;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;import org.xml.sax.SAXException;//解析XMl文件(并增、删、改、查、操作)public class DomXml {private Document document;public static void main(String[] args){DomXml dx = new DomXml();dx.getDom();//dx.addEle();dx.deleteEle();dx.updateEle();dx.showInfo();}//获取DOM树public void getDom(){try {//获取XML解析器DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//创建解析器工场DocumentBuilder builder = factory.newDocumentBuilder();//解析xml文件document = builder.parse("phoneinfo.xml");} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//添加手机信息public void addEle(){//添加节点Element brand = document.createElement("brand");//添加属性并且赋值brand.setAttribute("name","苹果");//添加子节点Element type = document.createElement("type");Element type1 = document.createElement("type");//添加属性并且赋值type.setAttribute("name","iphone7");type1.setAttribute("name","iphone6");//将type作为brand的子节点brand.appendChild(type);brand.appendChild(type1);//将phoneinfo作为头标签元素document.getElementsByTagName("phoneinfo").item(0).appendChild(brand);saveEle("phoneinfo.xml");}//保存信息到XML文件中(用转换器、输出流)public void saveEle(String path){//创建转换器工厂TransformerFactory factory = TransformerFactory.newInstance();//指定格式(格式缩进)factory.setAttribute("indent-number",4);try {//获取转换器Transformer transFormer = factory.newTransformer();//是否缩进格式transFormer.setOutputProperty(OutputKeys.INDENT,"Yes");//将DOM文件写入source里DOMSource source = new DOMSource(document);//指定路径OutputStream os = new FileOutputStream(path);StreamResult result = new StreamResult(new OutputStreamWriter(os,"UTF-8"));//将文件输入到指定位置transFormer.transform(source,result);} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}//删除信息public void deleteEle(){//获取节点集合NodeList brand = document.getElementsByTagName("brand");//遍历集合for(int i=0;i<brand.getLength();i++){Node brandNode = brand.item(i);Element eleBrand = (Element)brandNode;if(eleBrand.getAttribute("name").equals("苹果")){eleBrand.getParentNode().removeChild(eleBrand);}}saveEle("phoneinfo.xml");}//修改XML文件信息public void updateEle(){//获取节点的集合NodeList brand = document.getElementsByTagName("brand");//遍历节点集合for(int i=0;i<brand.getLength();i++){Node brandNode =brand.item(i);//将节点转换成元素Element eleBrand = (Element)brandNode;//增加ID的属性eleBrand.setAttribute("id",i+"");}//保存信息saveEle("phoneinfo.xml");}//获取手机信息public void showInfo(){//获取节点的集合NodeList brand = document.getElementsByTagName("brand");//遍历节点的集合获取每一个节点for(int i=0;i<brand.getLength();i++){Node nodeBrand = brand.item(i);//将节点转换成元素Element eleBrand = (Element)nodeBrand;//通过name属性获取对应的值System.out.println(eleBrand.getAttribute("name"));//获取子节点集合NodeList type = nodeBrand.getChildNodes();//遍历子节点结合for(int j=0;j<type.getLength();j++){Node nodeType = type.item(j);//判断是否为节点if(nodeType.getNodeType() == Node.ELEMENT_NODE){Element eleType = (Element)nodeType;System.out.println("\t"+eleType.getAttribute("name"));}}}}}
0 0
- 解析XML文件并且进行增删改查操作
- jaxp解析xml 对xml文件进行增删改查
- java代码对xml文件进行增删改查操作
- 【XML解析】(2)利用DOM解析技术对XML文档进行增删改查操作
- XML文件操作,新建,增删改查
- simpleXML怎样解析一个xml文件,并对xml进行增删改查 过程
- 使用jaxp对xml文件进行增删改查以及遍历操作
- java 使用DOM4J对XML文件进行增删改查操作
- 使用C#对XML进行增删改查操作
- ASP.NTE 对XML文档进行增删改查操作
- ASP.NTE 对XML文档进行增删改查操作
- 使用C#对XML进行增删改查操作 收藏
- DOM 进行XML操作的增删改查
- 用dom4j解析xml文件并执行增删改查操作
- 用dom4j解析xml文件并执行增删改查操作
- 使用dom4j对XML文件进行增删改查
- 用DOM对xml文件进行增删改查
- java 对xml文件进行 增删改查
- 触摸屏上图片移动延迟削减方法
- 深圳结构化面试真题
- zookeeper acl权限
- MySQL修改表结构的常用方法
- webView使用内部浏览器加载网页
- 解析XML文件并且进行增删改查操作
- Dockerfile: ADD vs COPY
- 有关jsp-title乱码的可能之一之解决
- xcode 'xxx.app' couldn't be opened because you don't have permission to view it
- How can I connect two bridges (eg br0 and br1)?
- 短信验证码接收工具的运行原理及app安装流程
- P1003越野跑
- 2016/10/26
- 基于HttpUrlConnection的简单封装SimpleHttp