zoukankan      html  css  js  c++  java
  • Java:XML篇,使用JDOM读取并解析XML

    1. 描述

    JDOM目标:我们希望提供一个解决方案,在Java中使用XML就像Java本身那么简单。它形如Java,它使用Java集合,它提供完全自然的API接口给Java开发人员, 它降低了使用XML的门槛。相对DOM与SAX,它不是一个抽象层或增强这些API。相反,它提供了一个强大的,轻量的阅读和写作的复杂性和内存消耗的方案。

    需要下载最新包jdom-2.0.4.jar(http://www.jdom.org/);下载包中没有API文档,需要参考http://www.jdom.org/docs/apidocs/index.html
    2. 示范代码

    package com.clzhang.sample.xml;
    
    import java.io.*;
    import java.util.*;
    
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    
    /**
     * 参考 http://www.jdom.org/,需要下载最新包jdom-2.0.4.jar
     * 下载包中没有API文档,需要参考http://www.jdom.org/docs/apidocs/index.html
     * 目标:我们希望提供一个解决方案,在Java中使用XML就像Java本身那么简单。
     * 它形如Java,它使用Java集合,它提供完全自然的API接口给Java开发人员, 它降低了使用XML的门槛。
     * 相对DOM与SAX,它不是一个抽象层或增强这些API。相反,它提供了一个强大的,轻量的阅读和写作的复杂性和内存消耗的方案。
     */
    public class JDOMTest {
        // 读取文件测试(其输入是writeXMLFile的输出)
        public void parseByJDOM(String file) throws Exception {
            SAXBuilder sb = new SAXBuilder();
            Document doc = sb.build(new File(file));
            Element root = doc.getRootElement();
            List<Element> elements = root.getChildren();
            for (Element element : elements) {
                String id = element.getAttribute("id").getValue();
                System.out.println(element.getName() + "\tid=" + id);
                List<Element> children = element.getChildren();
                for (Element child : children) {
                    String name = child.getAttribute("name").getValue();
                    String value = child.getText();
                    System.out.println("\t" + child.getName() + "\t" + name + "=" + value);
                }
            }
        }
    
        // 写入文件测试
        public void writeXMLFile(String filename) throws Exception {
            // 文档
            Document doc = new Document();
    
            // 根节点
            Element root = new Element("add");
            doc.setRootElement(root);
    
            // 子节点一
            Element element = new Element("doc");
            element.setAttribute("id", "1");
            Element name = new Element("field");
            name.setAttribute("name", "title");
            name.setText("北京欢迎您");
            Element content = new Element("field");
            content.setAttribute("name", "content");
            content.setText("北京真的欢迎您");
            element.addContent(name);
            element.addContent(content);
            root.addContent(element);
    
            // 子节点二
            element = new Element("doc").setAttribute("id", "2");
            name = new Element("field").setAttribute("name", "title");
            name.setText("上海也欢迎您");
            content = new Element("field").setAttribute("name", "content");
            content.setText("上海真的也欢迎您");
            element.addContent(name);
            element.addContent(content);
            root.addContent(element);
    
            // 输出到文件,输出流及格式都设置为UTF-8
            FileOutputStream fos = new FileOutputStream(filename);
            OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
            Format format = Format.getPrettyFormat();
            format.setEncoding("UTF-8");
    
            XMLOutputter output = new XMLOutputter();
            output.setFormat(format);
            output.output(doc, osw);
            osw.close();
            fos.close();
        }
    
        public static void main(String[] args) throws Exception {
            JDOMTest ins = new JDOMTest();
            ins.writeXMLFile("bbs.xml");
            ins.parseByJDOM("bbs.xml");
        }
    }
  • 相关阅读:
    java环境变量配置(Windows & Linux)
    转行自学编程的前提条件和能力
    IntelliJ IDEA 视频教程
    小孩都懂得用“头衔”来包装自己了,那么你呢?
    自创“乒乓球自嗨玩法”
    什么是npm以及npm基本命令
    hexo本地搭建以及在github远程部署
    如何下载Java-配置环境全教程
    图的存储结构以及遍历
    二叉树的存储结构以及遍历
  • 原文地址:https://www.cnblogs.com/nayitian/p/2867523.html
Copyright © 2011-2022 走看看