如何通过 JAXB 使用 hashmap 属性?

2023-12-28

我已经摆弄 JAXB 一段时间了,我需要生成如下所示的 xml

<Root attr1="" attr2="" .. attrn="" >
  <CNode attr1="" attr2="" />
   .
   .
   .
   <CNode .. />
</Root>

根元素的属性是动态的,来自属性文件或模板。将其放入如上所示的结构中的最佳方法是什么?我使用哈希图作为动态变量,然后尝试使用 XmlJavaTypeAdapter 映射它,我能做的最好的就是

<Root>
  <Attribs>
      <entry key="attr1">Value</entry>
  </Attribs>
  <CNode .. />
</Root>

jaxb 中有没有办法说使用 hashmap 的键作为属性名称,并将该键的值作为 xml 中该属性的值?或者,如果您认为有更好的方法,我很乐意提供建议。我正在考虑使用 jaxb 的编组器来单独添加根节点。不过,如果我可以使用 jaxb 的适配器,那就更好了。谢谢!


@XmlAnyAttribute 符合您的需要:

Root

import java.util.List;
import java.util.Map;

import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.namespace.QName;

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

    private Map<QName, String> extension;
    private List<CNode> cnodes;

    @XmlAnyAttribute
    public Map<QName, String> getExtension() {
        return extension;
    }

    public void setExtension(Map<QName, String> extension) {
        this.extension = extension;
    }

    @XmlElement(name="CNode")
    public List<CNode> getCnodes() {
        return cnodes;
    }

    public void setCnodes(List<CNode> cnodes) {
        this.cnodes = cnodes;
    }

}

CNode

import java.util.Map;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.namespace.QName;

public class CNode {

    private Map<QName, String> extension;

    @XmlAnyAttribute
    public Map<QName, String> getExtension() {
        return extension;
    }

    public void setExtension(Map<QName, String> extension) {
        this.extension = extension;
    }

}

Demo

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        Root root = (Root) unmarshaller.unmarshal(new File("input.xml"));

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(root, System.out);
    }

}

输入.xml

<?xml version="1.0" encoding="UTF-8"?>
<Root att1="A" att2="B">
    <CNode att3="C" att4="D"/>
    <CNode att5="E" att6="F"/>
</Root>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 JAXB 使用 hashmap 属性? 的相关文章

  • 如何使用 Java 中的 Web 服务(例如 Axis2)发送复杂对象的数组或集合?

    我对 SOAP Web 服务还比较陌生 虽然我完成了一些较小的 Web 服务项目 但我偶然从来不需要返回 或用作参数 复杂 对象的数组或集合 当我尝试这样做时 根据我的 SOAP 绑定风格 我会得到不同的奇怪行为 当我使用RPC 文字 我可
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • Hibernate.createBlob() 方法从 Hibernate 4.0.1 开始已弃用,并移至 Hibernate.getLobCreator(Session session).createBlob()

    Method Hibernate createBlob 已弃用自休眠4 0 1并搬到Hibernate getLobCreator Session session createBlob 任何解决方案我应该在方法内传递什么getLobCrea
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • 从另一个页面打开 Bootstrap 3 手风琴面板

    这是我的手风琴代码 div class panel group div class panel panel default div class panel heading h4 class panel title a href collap
  • 即使更新实际发生,mysql_affected_rows() 也会为 UPDATE 语句返回 0

    我正在尝试获取简单 mysql 更新查询中受影响的行数 但是 当我运行下面的代码时 PHP 的 mysql affected rows 始终等于 0 无论 foo 1 是否已经存在 在这种情况下 该函数应该正确地返回 0 因为没有行被更改
  • 使用 jQuery 动态添加行

    我正在构建一个需要多个可选输入的表单 我所拥有的基本上是这样的 每次用户按下加号按钮时 都会将新的一行表单输入添加到表单中 我该如何在 jQuery 中执行此操作 另外 当所有行都自动添加新行时 是否可以自动添加新行 或者只是最后一行 如果
  • win32 上的 python:如何获取绝对计时/CPU 周期计数

    我有一个 python 脚本 它调用基于 USB 的数据采集 C dotnet 可执行文件 主要的 python 脚本还执行许多其他操作 例如它控制步进电机 我们想要检查各种操作的相对时间 为此目的 dotnet exe 会从 C Stop
  • asp.net - 如何在 ListItem 文本属性中呈现 html 标签?

    我有一个通过服务器端填充的 DropDownList 控件 我使用 For Each datarow 循环并创建一个新的 ListItem 在 DataRow 中有一个 ID 为 Title 的列 该字段可以包含 或 标签 例如 父标题 中
  • 无法将磁盘添加到 Google VM 实例

    我无法向谷歌云虚拟机实例添加额外的磁盘 有限制吗 配额没问题 我已经添加了 6 个磁盘 第七有问题 我尝试了多个实例和多个磁盘 我收到错误 Editing VM instance X failed Error Invalid resourc
  • 如何保护使用 javax.scripting 运行的脚本?

    我在用javax scripting添加对在服务器端运行任意用户上传的 JavaScript 的支持 显然我想保护这些脚本 Rhino 本身有一个用于在运行时保护脚本的框架 的文档javax scripting但是 没有提及脚本可用的安全性
  • 解析二进制文件。什么是现代方式?

    我有一个二进制文件 其中有一些我知道的布局 例如让格式如下 2 个字节 无符号短整型 字符串的长度 5 个字节 5 个字符 字符串 一些 id 名称 4 个字节 无符号整数 一个跨步 24 字节 6 x 浮点 2 个步幅 每个步幅 3 个浮
  • 自动在后台启动应用程序?

    有没有办法让 iOS 应用程序保留在后台 以便它在设备打开时自动启动 并且在终止后会在稍后重新启动 我读过一些关于 VoIP 和 GPS 服务的帖子 我的应用程序发送带有用户位置的紧急短信 它需要保持活跃以监听遇险触发因素 是否可以通过使用
  • Mysql 从日期范围列表中生成每个日期

    我有一个查询 select from bla bla 它产生如下所示的日期范围结果 code date1 date2 a 2016 04 19 2016 04 21 b 2016 04 13 2016 04 14 我想生成 date1 和
  • 如何比较 Go 错误

    我有一个错误值 当在控制台上打印时给我Token is expired 如何将其与特定误差值进行比较 我尝试了这个但没有成功 if err errors New Token is expired log Printf Unauthorise
  • 在 C++ 中区分 typedef 和相同类型

    我想要类似于下面的功能 typedef int A typedef int B struct foo foo A a specific to type A foo B b specific to type B 我在程序中使用 typedef
  • UNION 多个存储过程的结果

    我有一个存储过程 我需要调用几次不同的时间 每次传递不同的参数 我想将结果收集为单个数据集 这样的事情可能吗 exec MyStoredProcedure 1 UNION exec MyStoredProcedure 2 UNION exe
  • 将事件处理程序添加到 iframe 以在 keyup 上调用

    在网页上我有 iframe 在其中显示一些内容 如果在 iframe 内按下任何键 iframe 是可编辑的 我想运行一个函数 我可以使用ajax 页面上有scriptmanager 来做到这一点 Sys UI DomEvent addHa
  • Ember.js - 如何使用 DS.store.findRecord() 方法处理错误

    我正在使用以下简单代码来检索用户 来自服务器 var someUser this store findRecord user 0 我用它来检索用户 如果在 0 id 上找不到用户 服务器返回 404 并根据 json api 出现错误 但我
  • 如何在R-studio中的函数体中设置断点?

    我有一个 R 脚本 它调用我编写的函数 但是 当我执行脚本时 程序不会停止在函数体中的调试点处 调试点唯一起作用的时间是在主脚本文件中设置它们时 我正在使用 R studio IDE 但是任何通用的解决方案也将受到赞赏 如果您处理多个文件
  • 获取 ORACLE 编程对象定义

    假设我有一个 ORACLE 模式 其中包含一个包 该包定义了类型 函数 过程等 CREATE PACKAGE DECLARE FUNCTION PROCEDURE END 是否可以执行查询来获取这些单独对象的定义 而无需包装包 如果您需要该
  • perl - 如何创建一个包含 n 个空字符串或零的数组?

    当我在 Perl 中操作 CSV 文件时 我经常需要用一些相同元素初始化一个数组 my arr for my i 0 n 1 push arr 有没有办法以更紧凑的形式做到这一点 完美的是 我希望有一个用于此目的的表达式 以便我可以轻松添加
  • getcwd() 和 dirname(__FILE__) 之间的区别?我应该使用哪个?

    在 PHP 中 有什么区别 getcwd dirname FILE 当我从 CLI 回显时 它们都返回相同的结果 echo getcwd n echo dirname FILE n Returns home user Desktop tes
  • 如何通过 JAXB 使用 hashmap 属性?

    我已经摆弄 JAXB 一段时间了 我需要生成如下所示的 xml