java之DocumentBuilderFactory解析xml(2)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 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=女

相关文章
|
1天前
|
XML Java 数据库连接
【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed
**问题摘要:** Java 应用在执行MyBatis映射时抛出`IllegalArgumentException`,指出XML片段缺少`com.xxx.xxx.xxx.xxx.dao.SingleApasInfoDao.selectListCondition`的值。此异常暗示XML映射文件存在错误或未定义指定方法。解决策略包括检查映射文件中标签的完整性与属性设置,修复可能的XML格式错误,以及确保使用的XML解析器支持所需特性,如有必要,升级解析器。
7 1
|
1天前
|
XML Web App开发 JavaScript
XML DOM 解析器
**XML DOM解析器将XML转换为JavaScript对象,允许在浏览器中操作XML。浏览器通常内置XML解析器,如XMLHttpRequest用于加载XML文档。以下代码示例展示如何加载&quot;books.xml&quot;:** ```markdown - 创建XMLHttpRequest对象(或使用ActiveXObject for IE6/IE5) - 打开GET请求到&quot;books.xml&quot; - 发送请求 - xmlDoc变量存储响应的XML DOM ``` 此过程使开发者能够通过JavaScript遍历、修改XML文档的结构。
|
1天前
|
监控 算法 Java
Java虚拟机垃圾收集机制深度解析
在Java的世界中,垃圾收集是确保内存管理高效运行的关键机制之一。本文将深入探讨Java虚拟机的垃圾收集机制,包括其工作原理、常见的垃圾收集算法以及调优实践。我们将基于最新的研究数据和实验结果,提供对垃圾收集器性能的比较分析,并讨论如何根据不同应用场景进行优化。通过逻辑严密的分析,我们旨在为Java开发者提供实用的指导,以帮助他们更好地理解和掌握这一关键技术。
|
2天前
|
存储 算法 Java
Java中的集合框架:深度解析与应用
Java中的集合框架:深度解析与应用
|
2天前
|
并行计算 Java 开发者
解析Java中的Lambda表达式用法
解析Java中的Lambda表达式用法
|
2天前
|
安全 Java 程序员
Java多线程编程最佳实践与常见问题解析
Java多线程编程最佳实践与常见问题解析
|
2天前
|
负载均衡 Java 微服务
Java中的可扩展微服务架构设计案例解析
Java中的可扩展微服务架构设计案例解析
|
14天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
16天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
24 3
|
1天前
|
存储 安全 Java
深度长文解析SpringWebFlux响应式框架15个核心组件源码
以上是Spring WebFlux 框架核心组件的全部介绍了,希望可以帮助你全面深入的理解 WebFlux的原理,关注【威哥爱编程】,主页里可查看V哥每天更新的原创技术内容,让我们一起成长。

推荐镜像

更多