Java XML 重新整理过的
来源:互联网 发布:腾讯云和阿里云的区别 编辑:程序博客网 时间:2024/06/05 17:01
package com.company;import org.dom4j.*;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.util.List;public class Main { public static void main(String[] args) throws DocumentException, IOException { //导入jar包 //File - ProjectStructure -> 左侧Modules //-> +号, JARS or ... ->找到jar包并添加// demo1();// demo2();// demo3();// demo4();// demo5();// demo6(); demo7(); } //解析 //常用的获取内容的方法 public static void demo1() throws DocumentException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); //1. 获取根节点(students) Element root = document.getRootElement(); //获取根节点名称 - (students) System.out.println("根节点名称: " + root.getName()); //2. 获取节点内容 - (无) System.out.println("根节点内容: " + root.getTextTrim()); //3. 获取子节点 List<Element> elements = root.elements(); System.out.println("子节点名称: " + elements.get(1).getName()); // 打印子节点的名字 System.out.println("子节点内容: " + elements.get(1).getTextTrim()); //"孙子节点" 获取student1的子节点 List<Element> subEs = elements.get(0).elements(); //打印student1的子节点的名字name System.out.println("孙子节点的名称: " + subEs.get(0).getName()); //打印student的子节点的内容(本平) System.out.println("孙子节点的内容: " + subEs.get(0).getTextTrim()); //练习: 使用for循环/for-each循环, // 打印xml文件中所有标签的名字及内容 //提示:循环嵌套 } public static void demo2() throws DocumentException { //方式一 for循环 SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); //1. 获取根节点(students) Element root = document.getRootElement(); getNodes(root);// List<Element> elements = root.elements();// for (int i = 0; i < elements.size(); i++) {// elements.get(i).getName();// elements.get(i).getTextTrim();// List<Element> subes = elements.get(i).elements();// for (int j = 0; j < subes.size(); j++) {// subes.get(j).getName();// subes.get(j).getTextTrim();// System.out.println("根节点名称: " + root.getName() + "子节点名称: "// + elements.get(i).getName()// + "孙子节点的名称: " + subes.get(j).getName() + "孙子节点的内容: " + subes.get(j).getTextTrim());// }// }// //方式二 for-each循环// System.out.println("根节点名称: " + root.getName());// //2. 获取节点内容 - (无)// System.out.println("根节点内容: " + root.getTextTrim());// for (Element e : elements) {// System.out.println("子节点名称: " + e.getName());// //2. 获取节点内容 - (无)// System.out.println("子节点内容: " + e.getTextTrim());// List<Element> subEs = e.elements();// for (Element e1 : subEs) {// System.out.println("孙子节点名称: " + e1.getName());// // 打印子节点的名字// System.out.println("孙子节点内容: " + e1.getTextTrim());// }// } } //通用的遍历方式 - 递归 //参数为任意需要遍历的节点 public static void getNodes(Element node) throws DocumentException { System.out.println("当前节点名称: " + node.getName()); System.out.println("当前节点内容: " + node.getTextTrim()); List<Attribute> attr = node.attributes(); for (Attribute a : attr) { System.out.println("属性名称: " + a.getName()); System.out.println("属性值: " + a.getValue()); } //获取子节点 List<Element> elements = node.elements(); //遍历所有子节点 for (Element e : elements) { //递归, 调用自己 getNodes(e); } } //属性 public static void demo3() throws DocumentException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); //1. 获取根节点(students) Element root = document.getRootElement(); List<Element> elements = root.elements(); //获取student1节点 Element stu1 = elements.get(0); //通过名字直接获取 //注意: 只能获取一级标签 Element e = stu1.element("name"); System.out.println(e.getName()); System.out.println(e.getTextTrim()); //通过名字直接获取值 String str = stu1.elementText("name"); System.out.println(str); //通过名字直接获取属性 Attribute att = stu1.attribute("id"); System.out.println(att.getName()); System.out.println(att.getValue()); //通过名字直接获取属性值 String str1 = stu1.attributeValue("id"); System.out.println(str1); //当前节点的所有属性 List<Attribute> attr = stu1.attributes(); //属性名(id) System.out.println("属性名: " + attr.get(0).getName()); //属性值(001) System.out.println("属性值: " + attr.get(0).getValue()); //for循环遍历 for (int i = 0; i < elements.size(); i++) { List<Attribute> attre = elements.get(i).attributes(); for (int j = 0; j < attre.size(); j++) { attre.get(j).getName(); attre.get(j).getValue(); System.out.println("属性名字: " + attre.get(j).getName() + "属性值: " + attre.get(j).getValue()); } } //for-each遍历 for (Attribute a : attr) { System.out.println("属性名字: " + a.getName() + "属性值: " + a.getValue()); } } //属性的增删改查 public static void demo4() throws DocumentException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); //1. 获取根节点(students) Element root = document.getRootElement(); //先获取有属性的节点student1 Element stu1E = root.element("student1"); //获取属性 Attribute idA = stu1E.attribute("id"); //删除属性 stu1E.remove(idA); //添加/修改属性 //如参数1存在,即修改 //不存在,就添加 stu1E.addAttribute("id", "新id 值"); //输出改变后的student1 getNodes(stu1E); } //节点的增删改查 public static void demo5() throws DocumentException, IOException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); //1. 获取根节点(students) Element root = document.getRootElement(); //先获取有属性的节点student1 Element stu1E = root.element("student1"); //添加新的节点phone Element phoneE = stu1E.addElement("phone"); //为节点设置值 phoneE.setText("133XXXXXXXX"); stu1E.remove(phoneE); //删除节点 Element nameE = stu1E.element("name");// stu1E.remove(nameE); //修改 nameE.setText("张然2"); getNodes(stu1E); writeToFile(document); } //将改动写入到文件中 public static void writeToFile(Document document) throws DocumentException, IOException { //中文字符 //输出格式// OutputFormat format = OutputFormat.createCompactFormat();// //设置编码// format.setEncoding("GBK");// File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml");// FileWriter fileWriter = new FileWriter(file);// XMLWriter xmlWriter = new XMLWriter(fileWriter, format);// xmlWriter.write(document);// xmlWriter.close(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/com/company/student.xml"), format); xmlWriter.write(document); xmlWriter.close(); } //将字符串转化成XML public static void demo6() throws DocumentException, IOException { String text = "<members><member>aaa</member></members>"; Document document = DocumentHelper.parseText(text); writeToFile(document); }// 将XML转化为字符串 public static void demo7() throws DocumentException, IOException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/Class11_XML/src/com/company/student.xml"); //读取文件内容,将内容以Document的形式呈现 Document document = sax.read(file); Element root = document.getRootElement(); //将document整体转为字符串 String docStr = document.asXML(); System.out.println(docStr); System.out.println("___________________________"); //将root根节点整体转为字符串 String rootStr = root.asXML(); System.out.println(rootStr); System.out.println("___________________________"); //将一个节点转为字符串 String stu1 = root.element("student1").asXML(); System.out.println(stu1); }}
这个是我XML里面自定义的内容
<?xml version="1.0" encoding="UTF-8"?><students> <student1 id="001" color="red"> <name>张然2</name> <sex>男</sex> <year>23</year> <phone>133XXXXXXXX</phone> </student1> <student2 id="002"> <name>云赫</name> <year>24</year> <sex>女</sex> </student2></students>
阅读全文
0 0
- Java XML 重新整理过的
- 以前碰到过的java面试题(整理备份)
- 动画的重新学习,整理
- Java里的XML概念整理
- ssh连接重新配置过的服务器
- Sun 的 Java 和 XML API:孰功孰过?
- 整理过的delphi快捷键
- 重新整理
- 重新整理
- java发送邮件jar包的配置及源码(重新整理)
- Java的重新学习
- 我的asp重新整理 - by yzty
- 重新整理javascript的domReady函数
- oracle大分区表的分区重新整理
- 重新整理的一些IC卡资料
- 重新合并整理日志文件的方法
- 整理cef2526重新编译的全过程
- xml的整理
- [bzoj4927][SDOI省队集训2017]diyiti
- 1
- 利用nginx提供网页服务,以及通过反向代理实现负载均衡的实践
- 设计模式简介
- 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
- Java XML 重新整理过的
- 软件工程师必须知道的20个常识
- 2
- 3
- 【源码学习】ThreadLocal 实现原理以及其内部存储结构(神奇的1640531527)
- [DP套DP] UOJ #141 【UER #4】量子态的棋盘
- 什么叫云计算
- Unity3d学习笔记 UGUI锚点屏幕自适应问题
- 爬虫实例-03