java --- Xml数据解析
来源:互联网 发布:软件生命周期 编辑:程序博客网 时间:2024/05/19 07:10
java — Xml数据解析
首先先导入jar包
//解析这里写代码片
//常用的获取内容的方法
这里写代码片
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 elements = root.elements();
// for (int i = 0; i < elements.size(); i++) {
// elements.get(i).getName();
// elements.get(i).getTextTrim();
// List 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 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();}//将字符串转化成XMLpublic 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);}
//http://write.blog.csdn.net/mdeditor
- java --- Xml数据解析
- Java 解析xml数据 sax
- Java XML JSON 数据解析
- Java 手动解析xml数据
- Java解析xml格式数据
- JAVA JDOM解析XML 带CDATA数据
- java实现解析xml数据为list
- JAVA-使用SAX解析XML数据
- 使用java读取/解析XML数据
- java用DefaultHandler解析XML格式数据
- Java解析和构造XML数据
- oracle解析xml数据
- 解析XML格式数据
- Jdom 解析XML数据
- jquery 解析 xml数据
- xml数据解析
- xml数据的解析
- Android---解析XML数据
- hibernate QBC 查询
- windows下安装mysql用Navicat连接报错
- 去除注册的事件 c# winform
- ListView and Sqlite Database
- 冒泡排序
- java --- Xml数据解析
- IE兼容
- O
- 通俗讲解KMP算法和next数组求解
- quartz定时任务
- chrome暂时无法在Fedora25/Wayland下运行的解决方法
- hibernate HQL多表查询
- 【IOI1994】The Clocks
- 2.4基本算法之分治 8463:Stupid cat & Doge