Java Document类详解:用法、实例及示例代码

一、什么是Java Document类

Document是Java中的一种类,用于描述HTML或XML文档。它提供了许多方法,可以获取文档的信息,其中包括文档的标题、元素、属性等等。使用Document类,我们可以方便地获取HTML或XML文档中的信息,以便我们对文档进行各种操作。

二、Java Document类的用法

1、创建Document对象

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document document = builder.parse(new File("file.xml"));

在上述代码中,首先我们使用DocumentBuilderFactory类的newInstance()方法获取一个工厂实例,然后使用该实例获取一个DocumentBuilder对象。最后,我们使用DocumentBuilder对象的parse()方法传入一个文件路径参数,就可以得到一个Document对象。

2、获取文档元素

Element rootElement = document.getDocumentElement();
System.out.println("根元素标签名:" + rootElement.getTagName());

在上述代码中,我们使用Document对象的getDocumentElement()方法获取文档的根元素,并获取该元素的标签名。

3、获取元素属性

NamedNodeMap attrs = element.getAttributes();
Node idAttr = attrs.getNamedItem("id");
System.out.println("id属性值:" + idAttr.getNodeValue());

在上述代码中,我们首先使用Element对象的getAttributes()方法获取元素的所有属性,然后使用NamedNodeMap对象的getNamedItem()方法获取指定名称的属性。最后,我们通过Node对象的getNodeValue()方法获取属性值。

4、获取元素子节点

NodeList childNodes = element.getChildNodes();
for(int i = 0; i < childNodes.getLength(); i++) {
    Node child = childNodes.item(i);
    if(child instanceof Element) {
        System.out.println("节点名:" + child.getNodeName() 
            + "  节点值:" + child.getTextContent());
    }
}

在上述代码中,我们使用Element对象的getChildNodes()方法获取元素的所有子节点,然后遍历每个子节点,如果子节点是一个Element对象,就获取其节点名和节点值(即文本内容)。

三、Java Document类示例代码

1、解析XML文档

假设我们有一个XML文件,其内容如下:



    
        Tom
        18
    
    
        Lucy
        19
    

下面是使用Java Document类解析该XML文档的示例代码:

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLParser {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dbf.newDocumentBuilder();
        Document document = builder.parse(new File("test.xml"));

        Element rootElement = document.getDocumentElement();
        System.out.println("根元素标签名:" + rootElement.getTagName());

        NodeList studentNodes = rootElement.getElementsByTagName("student");
        for(int i = 0; i < studentNodes.getLength(); i++) {
            Element student = (Element) studentNodes.item(i);
            NamedNodeMap attrs = student.getAttributes();
            Node idAttr = attrs.getNamedItem("id");
            System.out.println("id属性值:" + idAttr.getNodeValue());

            NodeList childNodes = student.getChildNodes();
            for(int j = 0; j < childNodes.getLength(); j++) {
                Node child = childNodes.item(j);
                if(child instanceof Element) {
                    System.out.println("节点名:" + child.getNodeName() 
                        + "  节点值:" + child.getTextContent());
                }
            }
        }
    }
}

2、生成XML文档

假设我们要生成一个XML文件,其内容如下:



    
        Tom
        18
    
    
        Lucy
        19
    

下面是使用Java Document类生成该XML文档的示例代码:

import java.io.File;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;

public class XMLGenerator {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dbf.newDocumentBuilder();
        org.w3c.dom.Document document = builder.newDocument();

        Element rootElement = document.createElement("students");
        document.appendChild(rootElement);

        Element student1 = document.createElement("student");
        student1.setAttribute("id", "001");
        Element name1 = document.createElement("name");
        name1.setTextContent("Tom");
        Element age1 = document.createElement("age");
        age1.setTextContent("18");
        student1.appendChild(name1);
        student1.appendChild(age1);
        rootElement.appendChild(student1);

        Element student2 = document.createElement("student");
        student2.setAttribute("id", "002");
        Element name2 = document.createElement("name");
        name2.setTextContent("Lucy");
        Element age2 = document.createElement("age");
        age2.setTextContent("19");
        student2.appendChild(name2);
        student2.appendChild(age2);
        rootElement.appendChild(student2);

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");

        DOMSource xmlSource = new DOMSource(document);
        StreamResult outputTarget = new StreamResult(new FileOutputStream(new File("test.xml")));
        transformer.transform(xmlSource, outputTarget);
    }
}

结语

Java Document类提供了一种方便的方式来解析和生成HTML或XML文档。无论是在读取网络上的数据,还是在将本地数据以XML格式存储时,Document类都能够帮助我们方便地实现这些任务。通过本文的介绍和示例代码,相信读者已经了解了Document类的使用方法,并能够应用Document类来进行XML文档的解析和生成。

原创文章,作者:QUWY,如若转载,请注明出处:https://www.506064.com/n/148743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QUWYQUWY
上一篇 2024-11-03 15:18
下一篇 2024-11-03 15:18

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • Python生成随机数的应用和实例

    本文将向您介绍如何使用Python生成50个60到100之间的随机数,并将列举使用随机数的几个实际应用场景。 一、生成随机数的代码示例 import random # 生成50个6…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python实现简易心形代码

    在这个文章中,我们将会介绍如何用Python语言编写一个非常简单的代码来生成一个心形图案。我们将会从安装Python开始介绍,逐步深入了解如何实现这一任务。 一、安装Python …

    编程 2025-04-29
  • 怎么写不影响Python运行的长段代码

    在Python编程的过程中,我们不可避免地需要编写一些长段代码,包括函数、类、复杂的控制语句等等。在编写这些代码时,我们需要考虑代码可读性、易用性以及对Python运行性能的影响。…

    编程 2025-04-29
  • 北化教务管理系统介绍及开发代码示例

    本文将从多个方面对北化教务管理系统进行介绍及开发代码示例,帮助开发者更好地理解和应用该系统。 一、项目介绍 北化教务管理系统是一款针对高校学生和教职工的综合信息管理系统。系统实现的…

    编程 2025-04-29

发表回复

登录后才能评论