使用java解析XML文件的步骤

简介: 使用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();
    }
    
  }

最后看一下运行结果:

相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3112 1
|
7月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
294 1
|
7月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
389 0
|
10月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
446 14
|
11月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
670 5
|
10月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
292 0
|
10月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
702 0
|
11月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
572 0
|
存储 设计模式 Java
重学Java基础篇—ThreadLocal深度解析与最佳实践
ThreadLocal 是一种实现线程隔离的机制,为每个线程创建独立变量副本,适用于数据库连接管理、用户会话信息存储等场景。
494 5
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
881 3

推荐镜像

更多
  • DNS