java之DocumentBuilderFactory解析xml(2)

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

2、Test Demo

Student.java文件

package com.parse.doc;
public class Student {
  public String name;
  public String age;
  public String sex;
  public Student() {}
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getAge() {
    return age;
  }
  public void setAge(String age) {
    this.age = age;
  }
  public String getSex() {
    return sex;
  }
  public void setSex(String sex) {
    this.sex = sex;
  }
  @Override
  public String toString() {
    return "name=" + name + ", age=" + age + ", sex=" + sex;
  }
}

ParseXml.java文件

package com.parse.doc;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class ParseXml {
  public static String xml = "<Students><student><name><![CDATA[陈喻]]></name><age><![CDATA[26]]></age><sex><![CDATA[男]]></sex></student><student><name><![CDATA[陈彩凤]]></name><age><![CDATA[25]]></age><sex><![CDATA[女]]></sex></student><student><name><![CDATA[陈紫宣]]></name><age><![CDATA[2]]></age><sex><![CDATA[女]]></sex></student><student><name><![CDATA[陈紫曦]]></name><age><![CDATA[7个月]]></age><sex><![CDATA[女]]></sex></student></Students>";
  public static final String STUDENT = "student";
  public static final String NAME = "name";
  public static final String AGE = "age";
  public static final String SEX = "sex";
  public static void main(String args[]) {
    List<Student> students = parseXmlByDoc(xml);
    if (students != null && students.size() > 0) {
      for (Student student : students) {
        System.out.println(student);
      }
    } else {
      System.out.println("students size is 0");
    }
  }
  public static List<Student> parseXmlByDoc(String str) {
    if (str == null || "".equals(str)) {
      System.out.println("str is null or ''");
      return null;
    }
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    List<Student> students = new ArrayList<Student>();
    DocumentBuilder documentBuilder;
    try {
      documentBuilder = documentBuilderFactory.newDocumentBuilder();
      Document document = documentBuilder.parse(new ByteArrayInputStream(str.getBytes()));
      Element rootElement = document.getDocumentElement();
      NodeList studentNodeList = rootElement.getElementsByTagName(STUDENT);
      for (int i = 0; i < studentNodeList.getLength(); i++) {
        Element appElement = (Element) studentNodeList.item(i);
        NodeList studentInfo = appElement.getChildNodes();
        Student student = new Student();
        for(int j = 0; j < studentInfo.getLength(); j++) { 
          Element element = (Element) studentInfo.item(j);
          String appAttr = element.getTagName();
          switch (appAttr) {
            case NAME:
              student.setName(element.getTextContent());
              break;
            case AGE:
              student.setAge(element.getTextContent());
              break;
            case SEX:
              student.setSex(element.getTextContent());
              break;
            default:
              break;
          } 
        }
        students.add(student);
      }
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
    return students;
  }
}

3、Running results

name=陈喻, age=26, sex=男

name=陈彩凤, age=25, sex=女

name=陈紫宣, age=2, sex=女

name=陈紫曦, age=7个月, sex=女

相关文章
|
3天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
44 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
10天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
8天前
|
Java 数据库连接 Spring
反射-----浅解析(Java)
在java中,我们可以通过反射机制,知道任何一个类的成员变量(成员属性)和成员方法,也可以堆任何一个对象,调用这个对象的任何属性和方法,更进一步我们还可以修改部分信息和。
|
30天前
|
存储 算法 Java
Java内存管理深度解析####
本文深入探讨了Java虚拟机(JVM)中的内存分配与垃圾回收机制,揭示了其高效管理内存的奥秘。文章首先概述了JVM内存模型,随后详细阐述了堆、栈、方法区等关键区域的作用及管理策略。在垃圾回收部分,重点介绍了标记-清除、复制算法、标记-整理等多种回收算法的工作原理及其适用场景,并通过实际案例分析了不同GC策略对应用性能的影响。对于开发者而言,理解这些原理有助于编写出更加高效、稳定的Java应用程序。 ####
|
30天前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
8月前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
381 1
|
XML JavaScript Java
java之DocumentBuilderFactory解析xml(1)
java之DocumentBuilderFactory解析xml(1)
435 0
|
XML Java 数据格式
|
XML Java 数据格式

推荐镜像

更多