解析XML文件总结
2017-07-20 19:13
218 查看
解析XML文件是JAVA编程中很重要的一个问题,这里总结一下,稍微有点乱
public class Main {
// //获取节点内容 - (无)
// System.out.println(root.getTextTrim());
// //3 获取子节点
// List elements = root.elements();
// //打印子节点的名字
// for (int i = 0;i < 2;i++) {
// System.out.println(“子节点的名称” + elements.get(i).getName());
// //打印子节点的内容
// System.out.println(“子节点的内容” + elements.get(i).getTextTrim());
// for (int j = 0; j <3;j ++){
// List subEs = elements.get(j).elements();
// System.out.println(“孙子节点的名称” + elements.get(i).getName());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// System.out.println(“孙子节点的名称” + elements.get(i).getyear());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// System.out.println(“孙子节点的名称” + elements.get(i).getsex());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// }
// }
// Listelements = root.elements();
// for (Element e:elements){
// System.out.println(“子节点的名称” + e.getName());
//// //打印子节点的内容
// System.out.println(“子节点的内容” + e.getTextTrim());
// ListsubEs = e.elements();
// for (Element e1:subEs){
// System.out.println(“孙子节点的名称” + e1.getName());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + e1.getTextTrim());
// }
// }
}
// public static void dome6() throws DocumentException {
// SAXReader sax = new SAXReader();
// File file = new File(“/Users/dllo/Documents/class_11XML/src/com/company/student.xml”);
// //读取文件内容,将内容以Document形式呈现
// Document document = sax.read(file);
// //获取根节点(students)
// Element root = document.getRootElement();
//
//添加新的节点phone
Element phoneE = stu1E.addElement(“phone”);
//为节点设置值
phoneE.setText(“133xxxxxxx”);
// stu1E.remove(nameE);
// OutputFormat format = OutputFormat.createPrettyPrint();
// //设置编码
// format.setEncoding(“GBK”);
// File file = new File(“/Users/dllo/Documents/class_11XML/src/com/company/student.xml”);
// FileWriter fileWriter = new FileWriter(file);
// XMLWriter xmlWriter = new XMLWriter(fileWriter, format);
// xmlWriter.write(document);
// xmlWriter.close();
}
public class Main {
public static void main(String[] args) throws DocumentException, IOException { // write your code here //导入jar包 //File - ProjectStructure -> 左侧Modules //-> +号, JARS or ... ->找到jar包并添加 //dome1(); // dome2(); //dome5(); // demo6(); demo7(); } //解析 //常用的获取内容的方法 public static void dome1() throws DocumentException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml"); //读取文件内容,将内容以Document形式呈现 Document document = sax.read(file); //获取根节点(students) Element root = document.getRootElement(); //获取节点名称-(students) System.out.println(root.getName()); //获取节点内容 - (无) 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("孙子节点的名称" + elements.get(0).getName()); //打印student1的子节点的内容(苯平) System.out.println("孙子节点的内容" + elements.get(0).getTextTrim()); } //练习:使用for 循环 ,for-each循环,打印xml文件中 //所有标签的名字及内容 //提示 循环嵌套 public static void dome2() throws DocumentException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml"); //读取文件内容,将内容以Document形式呈现 Document document = sax.read(file); //获取根节点(students) Element root = document.getRootElement(); getNodes(root);
// //获取节点内容 - (无)
// System.out.println(root.getTextTrim());
// //3 获取子节点
// List elements = root.elements();
// //打印子节点的名字
// for (int i = 0;i < 2;i++) {
// System.out.println(“子节点的名称” + elements.get(i).getName());
// //打印子节点的内容
// System.out.println(“子节点的内容” + elements.get(i).getTextTrim());
// for (int j = 0; j <3;j ++){
// List subEs = elements.get(j).elements();
// System.out.println(“孙子节点的名称” + elements.get(i).getName());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// System.out.println(“孙子节点的名称” + elements.get(i).getyear());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// System.out.println(“孙子节点的名称” + elements.get(i).getsex());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + elements.get(i).getTextTrim());
// }
// }
// Listelements = root.elements();
// for (Element e:elements){
// System.out.println(“子节点的名称” + e.getName());
//// //打印子节点的内容
// System.out.println(“子节点的内容” + e.getTextTrim());
// ListsubEs = e.elements();
// for (Element e1:subEs){
// System.out.println(“孙子节点的名称” + e1.getName());
// //打印student1的子节点的内容(苯平)
// System.out.println(“孙子节点的内容” + e1.getTextTrim());
// }
// }
}
//通用遍历方式-递归 //参数为任意需要遍历的节点 public static void getNodes(Element node) { 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/class_11XML/src/com/company/student.xml"); //读取文件内容,将内容以Document形式呈现 Document document = sax.read(file); //获取根节点(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 at = stu1.attribute("id"); System.out.println(at.getName()); System.out.println(at.getValue()); //通过名字直接获取属性值 String str1 = stu1.attributeValue("id"); System.out.println(str1); //stu1.element(); 获取 下一级子节点 //当前节点的所有属性 List<Attribute> attr = stu1.attributes(); //属性名(id) System.out.println("属性名" + attr.get(0).getName()); //属性值(001) System.out.println("属性值" + attr.get(0).getValue()); } //属性的增删改查 public static void dome5() throws DocumentException, IOException { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml"); //读取文件内容,将内容以Document形式呈现 Document document = sax.read(file); //获取根节点(students) Element root = document.getRootElement(); //获取节点名称-(students) System.out.println(root.getName()); //先获取有属性的节点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 dome6() throws DocumentException {
// SAXReader sax = new SAXReader();
// File file = new File(“/Users/dllo/Documents/class_11XML/src/com/company/student.xml”);
// //读取文件内容,将内容以Document形式呈现
// Document document = sax.read(file);
// //获取根节点(students)
// Element root = document.getRootElement();
//
//添加新的节点phone
Element phoneE = stu1E.addElement(“phone”);
//为节点设置值
phoneE.setText(“133xxxxxxx”);
getNodes(stu1E); //删除节点 Element nameE = stu1E.element("name");
// stu1E.remove(nameE);
//修改 nameE.setText("zhangran"); getNodes(stu1E); writeToFile(document); } //将改动写入到文件中 public static void writeToFile(Document document) throws DocumentException, IOException { //若有中文字符 //输出格式
// OutputFormat format = OutputFormat.createPrettyPrint();
// //设置编码
// format.setEncoding(“GBK”);
// File file = new File(“/Users/dllo/Documents/class_11XML/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.wri 4000 te(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 { SAXReader sax = new SAXReader(); File file = new File("/Users/dllo/Documents/class_11XML/src/com/company/student.xml"); //读取文件内容,将内容以Document形式呈现 Document document = sax.read(file); //获取根节点(students) Element root = document.getRootElement(); //将root根节点整体转化为字符串 String docStr =document.asXML(); System.out.println(docStr); //将某一个节点转化为字符串 String stu1 = root.element("student1").asXML(); System.out.println(stu1); }
}
相关文章推荐
- [SAP ABAP开发技术总结]ABAP读写、解析XML文件
- Android中对xml文件解析的3种方式总结
- QT开发(四十五)——XML文件解析总结
- Android解析XML文件总结
- java对XML文件的解析、节点的增加、删除操作总结
- libxml解析xml文件的一些总结
- 解析XML文件总结 分类: python基础学习 python 2013-06-17 12:04 232人阅读 评论(0) 收藏
- android 三种解析xml文件方法总结
- 解析XML文件总结
- QT开发(四十五)——XML文件解析总结
- JS操作XML实例总结(加载与解析XML文件、字符串)
- JS加强总结第三天(JS解析xml文件案例)
- java对XML文件的解析、节点的增加、删除操作总结
- JS加强总结第三天(JS解析xml文件案例)
- JS操作XML实例总结(加载与解析XML文件、字符串)
- JS加强总结第三天(JS解析xml文件案例)
- 慕课网学习DOM方法解析XML文件总结
- IIS 6.0/7.0/7.5、Nginx、Apache 等 Web Service 解析漏洞总结
- Pull解析XML文件,使用HttpClient方法