java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解

Java操作XML方式的四种比较与详解

XML是可扩展标记语言,被广泛应用于各种应用程序中,Java也提供了多种方式来操作XML文档。其中最常见的有DOM、SAX、JDOM、DOM4J。本文将详细解释这四种方式的使用方式和特点。

DOM(Document Object Model)

DOM是一种将整个XML文档作为一棵树状结构的方式来处理XML文档。在DOM模型中,整个XML文档被解析成一颗树状结构,每个XML元素都被转换成一个Java对象,整棵树形结构构成了一个对象模型。通过访问这个对象模型,可以对XML文档进行增加、删除、修改、查询操作。

DOM方式的优点是可以随意访问XML文档中的任何节点,操作灵活性高。缺点是一次性将整个文档加载到内存中,适用于小型文档,大型文档的解析效率较低。

以下是DOM方式的一个示例:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);

doc.getDocumentElement().normalize();

Element rootElement = doc.getDocumentElement();

NodeList nList = doc.getElementsByTagName("student");

for (int i = 0; i < nList.getLength(); i++) {
    Node nNode = nList.item(i);
    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode;
        System.out.println("Student id : " 
             + eElement.getAttribute("id"));
        System.out.println("First Name : " 
             + eElement.getElementsByTagName("firstname")
                             .item(0)
                             .getTextContent());
        System.out.println("Last Name : " 
             + eElement.getElementsByTagName("lastname")
                             .item(0)
                             .getTextContent());
        System.out.println("Marks : " 
             + eElement.getElementsByTagName("marks")
                             .item(0)
                             .getTextContent());
    }
}

SAX(Simple API for XML)

相较于DOM方式,SAX处理XML文档的方式是在解析文档的时候顺序遍历文档,遇到节点触发相应的事件,利用事件处理程序对节点进行操作和处理。由于SAX解析XML文档不像DOM方式要将整个文档加载进内存,因此适用于大型文档的解析。但缺点是无法访问XML文档的任意节点,只能按照严格的顺序遍历文档。

以下是SAX方式的一个示例:

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
    boolean bfname = false;
    boolean blname = false;
    boolean bnname = false;
    boolean bsalary = false;

    public void startElement(String uri, String localName,String qName, 
                    Attributes attributes) throws SAXException {

        if (qName.equalsIgnoreCase("FIRSTNAME")) {
            bfname = true;
        }

        if (qName.equalsIgnoreCase("LASTNAME")) {
            blname = true;
        }

        if (qName.equalsIgnoreCase("NICKNAME")) {
            bnname = true;
        }

        if (qName.equalsIgnoreCase("SALARY")) {
            bsalary = true;
        }
    }

    public void endElement(String uri, String localName,String qName) 
                throws SAXException {

    }

    public void characters(char ch[], int start, int length) throws SAXException {

        if (bfname) {
            System.out.println("First Name : " 
                    + new String(ch, start, length));
            bfname = false;
        }

        if (blname) {
            System.out.println("Last Name : " 
                    + new String(ch, start, length));
            blname = false;
        }

        if (bnname) {
            System.out.println("Nick Name : " 
                    + new String(ch, start, length));
            bnname = false;
        }

        if (bsalary) {
            System.out.println("Salary : " 
                    + new String(ch, start, length));
            bsalary = false;
        }
    }

 };
 saxParser.parse(file, handler);

JDOM

JDOM是一个Java库,由于其易用性成为Java解析XML的首选库之一。JDOM在DOM和SAX的基础上进行了改进,提供了更加方便和高效的处理XML文档的方式。JDOM将XML文档作为树结构来处理,但支持按照节点名称、节点类别和属性等查询节点,同时还支持XPath表达式查询。JDOM还可以通过将树结构缓存到内存中,提高解析效率。

以下是JDOM方式的一个示例:

SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("file.xml");
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("staff");

for (int i = 0; i < list.size(); i++) {
    Element node = (Element) list.get(i);
    System.out.println("First Name : " + node.getChildText("firstname"));
    System.out.println("Last Name : " + node.getChildText("lastname"));
    System.out.println("Email : " + node.getChildText("email"));
    System.out.println("Salary : " + node.getChildText("salary"));
}

DOM4J

DOM4J是一个Java库,提供了一种处理XML文档的简单和易用的方式。与JDOM相似,DOM4J将XML文档视为一个树状结构,同时也支持XPath表达式查询节点,但性能更高。DOM4J处理XML文档的方式与SAX相似,通过事件来处理XML文档。DOM4J还支持将XML文档转换成DOM模型和JDOM模型。

以下是DOM4J方式的一个示例:

SAXReader reader = new SAXReader();
Document document = reader.read(new File("file.xml"));
Element root = document.getRootElement();
List<Element> list = root.elements();

for (Element e : list) {
    System.out.println("First Name : " + e.elementText("firstname"));
    System.out.println("Last Name : "  + e.elementText("lastname"));
    System.out.println("Email : " + e.elementText("email"));
    System.out.println("Salary : " + e.elementText("salary"));
}

以上就是Java操作XML方式 DOM、SAX、JDOM、DOM4J 四种比较与详解的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 在dom4j中使用XPath的简单实例

    在dom4j中使用XPath可以方便地对XML文档中的数据进行定位和获取。下面是在dom4j中使用XPath的简单实例: 准备工作 在正式开始之前,需要先引入dom4j和junit的相关依赖,如果是Maven项目,可以在pom.xml文件中添加以下代码: <dependency> <groupId>org.dom4j</grou…

    html 2023年5月31日
    00
  • 手机版Instagram怎么注册 注册Instagram账号图文教程

    如果您想在手机上注册Instagram账号,可以按照以下步骤进行操作: 下载并安装Instagram应用程序:您可以在应用商店中搜索Instagram应用程序,下载并安装它。 打开Instagram应用程序:在安装完成后,打开Instagram应用程序。 注册Instagram账号:在Instagram应用程序中,点击“注册”按钮,然后输入您的电子邮件地址或…

    html 2023年5月17日
    00
  • idea tomcat乱码问题的解决及相关设置的步骤

    当我们使用idea进行web开发时,常常会遇到tomcat乱码问题,比如在jsp中输出中文出现乱码的情况。此时可以采取以下方案来解决该问题。 1. 配置Tomcat编译器的字符集和文件编码 在idea中打开Tomcat服务器的配置对话框,找到JVM Arguments一栏,在其中加入如下参数: -Dfile.encoding=UTF-8 这个参数可以让jav…

    html 2023年5月31日
    00
  • Java对XML文件增删改查操作示例

    Java对XML文件的增删改查操作攻略 1. XML文件的读取 在 Java 中实现 XML 文件的读取,通常使用 DOM(Document Object Model)或 SAX(Simple API for XML)这两种方式。 DOM 是 W3C 组织推荐的一种用于在程序中处理 XML 文档的标准 API,它将 XML 文档加载到内存中,以树形结构表示,…

    html 2023年5月30日
    00
  • JavaSE XML解析技术的使用方法详解

    JavaSE XML解析技术的使用方法详解 XML是一种常用数据传输格式,在Java开发中,对XML文件进行解析是非常常见的操作。本文将介绍JavaSE中XML解析技术的使用方法,包括常见的JavaSE XML库和XML解析API。 常见的JavaSE XML库 在JavaSE中,有多个XML库可供开发者使用,其中最常用的库包括: JAXP(Java API…

    html 2023年5月30日
    00
  • Autodesk T-Splines 4.0怎么安装?Autodesk T-Splines 4.0详细安装以及破解步骤

    Autodesk T-Splines 4.0是一款用于三维建模的软件,如果您想要安装和破解Autodesk T-Splines 4.0,可以按照以下步骤进行操作: 步骤1:下载Autodesk T-Splines 4.0 打开浏览器。 访问Autodesk T-Splines 4.0下载页面。 下载Autodesk T-Splines 4.0。 步骤2:安装…

    html 2023年5月17日
    00
  • x5660处理器怎么样 x5660相当于i几

    以下是“x5660处理器怎么样 x5660相当于i几”的完整攻略: x5660处理器怎么样? x5660处理器是英特尔推出的一款处理器,采用了32纳米工艺,具有6个物理核心和12个逻辑核心。该处理器的主频为2.8GHz,支持超线程技术和Turbo Boost技术。下面是一些关于x5660处理器怎么样的技巧和步骤,可以帮助用户了解该处理器的性能和功能。 技巧1…

    html 2023年5月18日
    00
  • 网站SEO中怎么做好用户体验

    以下是“网站SEO中怎么做好用户体验”的完整攻略: 网站SEO中怎么做好用户体验 在网站SEO中,用户体验是非常重要的因素。一个好的用户体验可以提高用户的满意度和忠诚度,同时也可以提高网站的排名和流量。以下是一些关于如何做好用户体验的建议: 建议1:提供高质量的内容 网站的内容是用户访问的主要原因之一。因此,提供高质量的内容是做好用户体验的关键。高质量的内容…

    html 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部