我有一个 XML文档:
<?xml version="1.0" encoding="UTF-8"?>

<Log>
    <logEntry>
       <severity>WARN</severity>
       <dateTime>2011-03-17 15:25</dateTime>
       <message>Here is the text from the application</message>
       <class>(class name)</class>
       <program> TB Reception</program>
    </logEntry>

    <logEntry>
       <severity>WARN</severity>
       <dateTime>2011-03-17 15:25</dateTime>
       <message>Here is the text from the application</message>
       <class>(class name)</class>
       <program> TB Reception</program>
    </logEntry>
</Log>

和两个POJO:

package org.jwes.jaxb.jax;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Log")
public class Log {
    @XmlElementWrapper(name = "logEntry")
    private List<LogEntry> logList;

    public List<LogEntry> getLogEntries() {
        return logList;
    }

    public void setLogEntries(List<LogEntry> logList) {
        this.logList = logList;
    }


}
package org.jwes.jaxb.jax;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlRootElement(name="LogEntry")
public class LogEntry{


    private String source;
    private String message;
    private String severity;
    private String program;
    private String className;


    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getSeverity() {
        return severity;
    }
    public void setSeverity(String severity) {
        this.severity = severity;
    }
    public String getProgram() {
        return program;
    }
    public void setProgram(String program) {
        this.program = program;
    }
    @XmlElement(name = "class")
    public String getClassName() {
        return className;
    }
    public void setClassName(String className) {
        this.className = className;
    }
}

我想使用JAXB检索XML节点的值.我写了这个快速的代码:

public class App 
{
    public static void main( String[] args ) throws JAXBException,IOException
    {
        JAXBContext jc = JAXBContext.newInstance(Log.class);

        Unmarshaller um = jc.createUnmarshaller();
        Log logElement=(Log)um.unmarshal(new FileReader("src/main/resources/log.xml"));
        System.out.println(logElement.getLogEntries().toArray().length);


    }
}

当我运行它时,我总是获得零值.

解决方法

你不应该在这里使用@XmlElementWrapper,只是@XmlElement:
@XmlRootElement(name="Log")
public class Log {
    @XmlElement(name = "logEntry")
    private List<LogEntry> logList;

java – JAXB unmarshall一个集合的更多相关文章

  1. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  2. 如何在iOS 10上设置日志级别?

    换句话说,如果我在iOS上运行的代码就像这样:那么在Console.app中看到记录的消息需要做些什么呢?

  3. 为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]

    为什么Xcode8打印[LogMessageLogging]在控制台中,当我调用地图视图时?任何人都可以提出一些建议吗?解决方法PrivacyTheunifiedloggingsystemconsidersdynamicstringsandcomplexdynamicobjectstobeprivate,anddoesnotcollectthemautomatically.Toensuretheprivacyofusers,itisrecommendedthatlogmessagesconsiststri

  4. ios – 在Swift 4中为os_log传递可变参数

    我正在尝试为Swift4/iOS11中的os_log编写一个方便的包装器,但是我已经遇到了传递可变参数的艰难战斗.基本上,我想编写一个如下所示的函数.不幸的是,我似乎无法弄清楚传递参数的神奇语法,并且在CVararg讨论的泥潭中有点迷失.(…这让我想念Python的splatting语法)解决方法我还没有找到解决方案,所以这个愚蠢的黑客:

  5. xcode – osx上的config.log是什么?它在哪里?

    任何人都可以解释’configure’是什么和做什么,一般可以找到config.log文件?

  6. api – HTTPS请求仅在iOS,Ionic 2上失败

    我有一个Ionic2应用程序,它调用SpringBootAPI将推送通知发送到其他设备.API使用HTTPS配置.APIPOST请求适用于除iOS之外的所有内容.我在服务器上的SSL证书是自签名的(可能就是这样吗?

  7. swift学习日志—— Log日志

    Log输出是程序开发中很重要的组成部分,虽然它并不是直接的业务代码,但是却可以忠实地反映我们的程序是如何工作的,以及记录程序运行的过程中发生了什么。在OC中的Log日志设置请看我的另一篇博客:设置Log日志打印开关在Swift中,最简单的输出方法就是使用print,在我们关心的地方输出字符串和值。如果我们在开发中就注意使用了统一的log输出的话,这就变得非常简单了。

  8. 使用XcodeColors 来显示XCGLogger,进行swift 的logger定制

    XcodeColors项目地址XcodeColorsinstallationinstructionsforXcode4,5,6&7:Downloadorclonetherepository.OpentheXcodeColorsprojectwithXcodeIfcompilingforXcode4,thenchangetheschemestousetheXcode4buildconfigurati

  9. swift 自定义log输出

    swift自定义log输出直接上代码

  10. swift LOG 输出

    在Swift中,最简单的输出方法就是使用print,在我们关心的地方输出字符串和值。最棒的是,我们不再需要对这样的输出进行维护,无论在哪里它都能正确地输出各个参数://...printLog//...}//输出://Test.swift[62],method():这是一条输出另外,对于log输出更多地其实是用在程序开发和调试的过程中的,过多的输出有可能对运行的性能造成影响。在Release版本中关闭掉向控制台的输出也是软件开发中一种常见的做法。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部