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

原创粉丝点击