分分钟getXML解析之DOM解析。
来源:互联网 发布:担保公司业务软件 编辑:程序博客网 时间:2024/06/11 21:14
XML简介
xml:extensive markup language.可拓展性表示语言。
他主要的作用就是持久化存储数据
数据交换,传输数据的一种文本格式。
数据配置,用于配置文件。
xml的解析方法有三种:
1,DOM解析。
2,SAX解析。
3,pull解析。
DOM解析
DOM解析有两种方式。
1,使用Jaxp实现DOM解析
即使用DocumentBuilderFactory类获取解析器。
下面JAXPDOM解析实例:【包括增删改】
> 文档内容<?xml version = "1.0" encoding="GBK"?><students> <student> <id>1</id> <name>王同</name> <subject>java</subject> <score>89</score> </student> <student> <id>2</id> <name>李佳</name> <subject>sql</subject> <score>58</score> </student></students>
/** * 解析xml文件,并放入集合当中 * 解析步骤如下: */ public static void AnalyseXMLdoc() throws Exception { //创建工厂对象 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //创建解析对象 DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder(); //解析成DOC Document document = documentBuilder.parse("src\\scores.xml"); //解析完成,获取根节点 students Element root = document.getDocumentElement(); //根据根节点对象的获取子节点(student)集合 NodeList nodeList = root.getElementsByTagName("student"); //用于存储节点元素 List<Student> stuList = new ArrayList<>(); //遍历该集合获取孙节点 for (int i = 0; i < nodeList.getLength(); i++) { //获取每一个孙节点 Element element = (Element)nodeList.item(i); //得到孙节点元素集合,但是因为每个孙节点只有一个ID所以就只获取第一个 Element idEle = (Element) element.getElementsByTagName("id").item(0); Element nameEle = (Element) element.getElementsByTagName("name").item(0); Element subjEle = (Element) element.getElementsByTagName("subject").item(0); Element scoEle = (Element) element.getElementsByTagName("score").item(0); //获取每个元素文本内容,转换成对应数据类型 int Id = Integer.parseInt(idEle.getTextContent()); String name = nameEle.getTextContent(); String subject = subjEle.getTextContent(); int score = Integer.parseInt(scoEle.getTextContent());// System.out.println(Id+name+subject+score); Student student = new Student(Id, name, subject, score); stuList.add(student); } System.out.println(list); }//end anl -method
追加子孙元素,删除孙元素,更新元素内容
/** * 在xml文件中添加子孙元素,删除孙元素,更新元素 * */ public static void editElement() throws Exception { //创建工厂对象, DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //获取解析对象 DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder(); //解析xml文件 Document document = documentBuilder.parse("src\\scores.xml"); //获取根节点 Element root = document.getDocumentElement(); /** * 创建新元素 */ Element bookEle = document.createElement("student"); //创建并设置孙元素内容,同样是使用文档对象 Element idEle = document.createElement("id"); idEle.setTextContent("3"); Element nameEle = document.createElement("name"); nameEle.setTextContent("莉莉"); Element subEle = document.createElement("subject"); subEle.setTextContent("人工智能"); Element scoEle = document.createElement("score"); scoEle.setTextContent("98"); //在根据元素关系进行添加 bookEle.appendChild(idEle); bookEle.appendChild(nameEle); bookEle.appendChild(subEle); bookEle.appendChild(scoEle); root.appendChild(bookEle); /** * 更新元素 */ //根据跟节点获取需要更新的节点元素,调用设置文本内容的方法更新 Element nameEle = (Element) root.getElementsByTagName("name").item(0); nameEle.setTextContent("王同同"); /** * 删除指定孙建点 */ //获取("name")孙节点集合 NodeList nodeList = document.getElementsByTagName("name"); //指定第几个子节点 Node firstName = nodeList.item(0); //获取父节点删除子节点 firstName.getParentNode().removeChild(firstName); /*以上更新还只有在内存中更新,并未存进硬盘当中,所以我们需要如下步骤存进硬盘*/ //创建转换工厂: TransformerFactory transformerFactory = TransformerFactory.newInstance(); //创建转换器 Transformer transformer = transformerFactory.newTransformer(); //设置输出格式 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src\\scores.xml"), "GBK"); //转换 transformer.transform(new DOMSource(document), new StreamResult(osw)); System.out.println("append succeed!"); }//end addE-method
阅读全文
0 0
- 分分钟getXML解析之DOM解析。
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之----DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之dom解析
- 解析xml之--DOM
- xml解析之Dom
- XML解析之 DOM
- Dom解析之GDataXML
- poj 1836
- spark源码分析之DAGScheduler提交作业(job)过程、stage阶段说明
- MCU调试gprs模块遇到些问题总结如下
- HashSet类
- java class 零星知识点集合
- 分分钟getXML解析之DOM解析。
- Linux开发工具(gcc gdb make shell)——GCC 三级优化
- 计算机图形学的数学基础
- CCF 201609-2 火车购票
- DrawerLayout的简单使用
- 微信小程序:支付系列合集(开发指南+精品Demo)
- Struts2的面试知识点
- Android应用商店——项目介绍
- 取得手机屏幕大小DisplayMetrics的应用