使用 JAXB 解组 XML

2024-01-06

我有一个 XML 文件,我正在尝试对其进行解组,但我不知道如何执行此操作。

XML 看起来像

<config>
    <params>
        <param>
            <a>draft</a>
            <b>Serial</b>
        </param>
        <param>
            <a>amt</a>
            <b>Amount</b>
        </param>
    </params>
    <server>
        <scheme>http</scheme>
        <host>somehost.com/asdf</host>
    </server>
</config>

当我将 params 作为根元素并且没有服务器元素或配置作为根元素时,我以前可以进行解组。

我添加了一个配置类来尝试解组它,但我不知道哪里出错了。

我的课程看起来像

@XmlRootElement
public class Config {

    private Params params = new Params();

    @XmlElement(name="params")
    public Params getParams() {
        return params;
    }
    public void setParam(Params params) {
        this.params = params;
    }
}

public class Params {
    private List<Param> params = new ArrayList<Param>();

    public List <Param> getParam() {
        return params;
    }

    public void setParam(List<Param> params) {
        this.params = params;
    }
}

public class Param {
    String a;
    String b;        
    //getters and setters.  omitted for brevity     
}   

解组代码

File file = new File("C:\\config.xml");
InputStream inputStream = new FileInputStream(file);
JAXBContext jc = JAXBContext.newInstance(Config.class);
Unmarshaller u = jc.createUnmarshaller();
conf = (Config) u.unmarshal(file);
System.out.println(conf.getParams().getParam().size());

println 打印 0。我哪里出错了?

我知道我还没有任何服务器节点的代码,还没有到达那里。我的实际 XML 还没有该节点,而且我仍然无法让它在 config 标记内正确解组参数。


您只需要进行以下更改,它就会起作用。将 Config 中的 setParams 方法更改为

@XmlElement(name = "params") //<--Annotation added here
public void setParam(Params params) {
    this.params = params;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JAXB 解组 XML 的相关文章

随机推荐

  • 完成不是护照js中的函数错误

    我使用 Passport js 进行身份验证和会话 我从 mysql 获取用户名并从客户端获取输入字段 但是当done被要求进行验证 我得到done is not a function 服务器 js var express require
  • Xcode 8 红色文件但不丢失

    我刚刚在我的一个 iOS 项目中看到一个奇怪的错误 我正在使用 Xcode 8 最新版本 我有一些课程与其他项目一起分享 这些文件通过引用添加到项目中 如果我需要编辑它们 我只需编辑一次 一切正常 但我发现在我的一个项目中 许多文件都是红色
  • dplyr 包:如何使用“%xyz%”SQL 语法查询大型数据框?

    dplyr 是唯一可以处理我的 843k data frame 并快速查询它的包 我可以使用一些数学和相等标准进行精细过滤 但是我需要实现对概念的搜索 我需要像这样的 sqldf 查询 library sqldf head iris sql
  • PyCharm 项目文件夹记录出现 ModuleNotFoundError 错误

    我正在 PyCharm 中从事一个项目 该项目具有以下结构 projectRoot folder1 somecode py utils init py myutils1 py 我想知道如何进行导入 以便在以交互方式在 pyCharm 控制台
  • bootstrap-vue 表 td 元素样式

    我有一个问题 就是给 td b 表元素的标签 这是模板 td
  • 在哪里可以找到“SIP Communicator”库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为 Android 开发 Sip 客户端 我需要这个库来完成我的项目 有一个使用这个库的开源代码 但我在任何地方都找不到它 一款知名
  • Django - 在基于类的视图上使用reverse()

    我的 Django 项目中有以下 url 配置 urlpatterns patterns r my view MyViewClass as view 有没有办法使用reverse 函数获取上面视图的url 就在这里 Use the name
  • TransactionScope 和 Npgsql - 准备好的事务问题

    我有以下代码 using TransactionScope tScope new TransactionScope using NpgsqlConnection myConnection new NpgsqlConnection MyCon
  • 将 RecyclerView 锚定在折叠工具栏布局上稍高的位置 [重复]

    这个问题在这里已经有答案了 是否可以将 RecyclerView 锚定在比通常位置高一点的位置 就像大多数可折叠视图上的 FAB 图标一样 有关预期结果 请参见图 1 Image 1 我尝试了以下代码 但它没有给出预期结果 有关当前结果 请
  • 批量分配令牌

    我有以下问题 我正在从数据库中读取字段 这些字段并非都是必填字段 因此 并非所有内容都已填写 我遇到的问题是 Batch ms dos 和 Tokens 函数 让我举一个例子 有问题的字段如下 示例 First Name John Last
  • 如何在 XAML 中注入转换器

    我有一个 IValueConverter 实现的类 我需要使用我的 DI 容器 Ninject 注入它 问题是 在 XAML 中 没有立即明显的方法来控制 Converter 对象的实例化 所以我的 XAML 包含这样一行 Source 绑
  • for 循环的限制是计算一次还是每次循环都计算?

    以下循环中的限制 12332 324234 是计算一次还是每次循环运行时计算 for int i 0 i lt 12332 324234 i Do something 为此 计算一次 或更可能计算 0 次 编译器将为您优化乘法 然而 如果你
  • 发布者订阅者模式的现代替代方案

    我有一个 C Windows 应用程序 我正在处理发布者 订阅者的情况 其中我的一个类 发布者 定期生成数据并将其传递给另一个类 订阅者 该类不断等待接收来自发布者的通知 我是设计模式的新手 我查找了发布者订阅者模型的常见实现 我注意到它们
  • jquery 如果鼠标悬停

    我有一个带有悬停功能的 img 来显示元素 其中一些新元素与 img 重叠 因此如果我将鼠标悬停在新元素上 因为光标不再位于 img 上 该元素会隐藏自身 然后立即重新出现 因为光标再次位于 img 上 如果光标位于新元素内的 img 上
  • Pandas,groupby 并找到组中的最大值,返回值和计数

    我有一个带有日志数据的 pandas DataFrame host service 0 this com mail 1 this com mail 2 this com web 3 that com mail 4 other net mai
  • 是否可以在 Firebase 托管上托管 Express 和 socket.io 应用程序?

    我关注 Firebase 云功能已经有一段时间了 最近 我发现在 Firebase Hosting 上托管 Node js 应用程序 但它仅使用 Express 我们可以在 Firebase 上托管 socket io 应用吗 Fireba
  • 部分 Fragment 项目隐藏在操作栏下

    我正在学习 android 开发 我的问题可能很简单 我被困在下面的部分并请求你的帮助 描述 我正在使用android默认的 导航抽屉 活动来实现一个小项目 我创建了一个片段 当用户从导航抽屉中选择一个选项时 该片段将打开 面临的问题 Wh
  • Python3 - Matplotlib FuncAnimation 连续内存泄漏

    EDIT2 因此 经过更多的工作 我创建了最小的样本 它在每台机器上都相当不错地重现了 Memoryleak 这段代码只是创建一个 TKinter 窗口和一个带有 3 个正弦波的 matplotlib 画布 然后尝试制作动画 看到 blit
  • 在 laravel 8 上安装 laravel/jetstream 失败

    通过composer安装jetstream后composer require laravel jetstream然后突然得到一个ErrorException 没有这样的文件或目录 Writing lock file Generating o
  • 使用 JAXB 解组 XML

    我有一个 XML 文件 我正在尝试对其进行解组 但我不知道如何执行此操作 XML 看起来像