使用java解析XML文件的步骤

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 使用java解析XML文件的步骤

以前的时候,也解析过,今天又拿出来解析就让忘记怎么解析了,后来在网上查还有自己想,终于解析出来了,下面就是原XML文件:

accp.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE accp SYSTEM "accp.dtd">
<?xml-stylesheet type="text/css" href="accp.css"?>
<accp>
  <teachers>
    <teacher >
      <name>刘老师</name>
      <age>30</age>
      <degree>硕士</degree>
      <position>Java</position>   
    </teacher>
    <teacher>
      <name>李老师</name>
      <age>28</age>
      <degree>本科</degree>
      <position>.Net</position>   
    </teacher>
  </teachers>
  <students>
    <student>
      <name>高胜寒</name>
      <age>21</age>     
      <grade>Y2</grade>
      <school>北京中心</school>
    </student>
    <student>
      <name>信达雅</name>
      <age>19</age>
      <grade>S2</grade>
      <school>天津中心</school>
    </student>
  </students>
</accp>

还需要一个dtd文件accp.dtd:

<!ELEMENT accp (teachers,students)>
<!ELEMENT teachers (teacher*)>
<!ELEMENT students (student*)>
<!ELEMENT teacher (name,age,degree,position)>
<!ELEMENT student (name,age,grade,school)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT degree (#PCDATA)>
<!ELEMENT position (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT school (#PCDATA)>

最后就是解析的代码了:

//解析xml文件
  public static void Test1(){
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    //从DOM工厂获得DOM解析器
    try {
      DocumentBuilder db = dbf.newDocumentBuilder();
      //解析文档,得到一个dom树
      Document doc = db.parse("accp.xml");
      //得到所有的teacher节点
      NodeList teaList = doc.getElementsByTagName("teacher");
      System.out.println("xml里面共有"+teaList.getLength()+"个老师信息!");
      //循环老师信息
      for (int i = 0; i < teaList.getLength(); i++) {
        Node teacher = teaList.item(i);
        //获取第i个老师的信息的id值并输出
        /*Element element = (Element)teacher;
        String id = element.getAttribute("id");
        System.out.println("id:"+id);*/
        //获取第i个老师元素的所有子元素的名称和值并输出
        for(Node node=teacher.getFirstChild();node!=null;node =node.getNextSibling() ){
          if(node.getNodeType()==Node.ELEMENT_NODE){
            String value = node.getFirstChild().getNodeValue();
            System.out.print("name:"+value+"\t");
          }
        }
        System.out.println();
      }
    } catch (ParserConfigurationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (SAXException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    
  }

最后看一下运行结果:

相关文章
|
22天前
|
存储 缓存 安全
Java内存模型深度解析:从理论到实践####
【10月更文挑战第21天】 本文深入探讨了Java内存模型(JMM)的核心概念与底层机制,通过剖析其设计原理、内存可见性问题及其解决方案,结合具体代码示例,帮助读者构建对JMM的全面理解。不同于传统的摘要概述,我们将直接以故事化手法引入,让读者在轻松的情境中领略JMM的精髓。 ####
32 6
|
23天前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
24天前
|
监控 算法 Java
Java虚拟机(JVM)的垃圾回收机制深度解析####
本文深入探讨了Java虚拟机(JVM)的垃圾回收机制,旨在揭示其背后的工作原理与优化策略。我们将从垃圾回收的基本概念入手,逐步剖析标记-清除、复制算法、标记-整理等主流垃圾回收算法的原理与实现细节。通过对比不同算法的优缺点及适用场景,为开发者提供优化Java应用性能与内存管理的实践指南。 ####
|
9天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
69 34
|
17天前
|
Java 编译器
Java 泛型详细解析
本文将带你详细解析 Java 泛型,了解泛型的原理、常见的使用方法以及泛型的局限性,让你对泛型有更深入的了解。
30 2
Java 泛型详细解析
|
18天前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
47 12
|
15天前
|
存储 算法 Java
Java内存管理深度解析####
本文深入探讨了Java虚拟机(JVM)中的内存分配与垃圾回收机制,揭示了其高效管理内存的奥秘。文章首先概述了JVM内存模型,随后详细阐述了堆、栈、方法区等关键区域的作用及管理策略。在垃圾回收部分,重点介绍了标记-清除、复制算法、标记-整理等多种回收算法的工作原理及其适用场景,并通过实际案例分析了不同GC策略对应用性能的影响。对于开发者而言,理解这些原理有助于编写出更加高效、稳定的Java应用程序。 ####
|
15天前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
17天前
|
Java 数据库连接 开发者
Java中的异常处理机制:深入解析与最佳实践####
本文旨在为Java开发者提供一份关于异常处理机制的全面指南,从基础概念到高级技巧,涵盖try-catch结构、自定义异常、异常链分析以及最佳实践策略。不同于传统的摘要概述,本文将以一个实际项目案例为线索,逐步揭示如何高效地管理运行时错误,提升代码的健壮性和可维护性。通过对比常见误区与优化方案,读者将获得编写更加健壮Java应用程序的实用知识。 --- ####
|
21天前
|
数据采集 存储 Web App开发
Java爬虫:深入解析商品详情的利器
在数字化时代,信息处理能力成为企业竞争的关键。本文探讨如何利用Java编写高效、准确的商品详情爬虫,涵盖爬虫技术概述、Java爬虫优势、开发步骤、法律法规遵守及数据处理分析等内容,助力电商领域市场趋势把握与决策支持。