使用 MOXy 和 XPath,是否可以解组两个属性列表?

2024-02-08

请注意,这不是我问的另一个问题的重复,“使用 MOXy 和 XPath,是否可以解组属性列表? https://stackoverflow.com/questions/6907225/with-moxy-and-xpath-is-it-possible-to-unmarshal-a-list-of-attributes“很相似,但又不一样。

我的 XML 看起来像这样:

<test>
  <items>
    <item type="cookie" brand="oreo">cookie</item>
    <item type="crackers" brand="ritz">crackers</item>
  </items>
</test>

这与我之前问题中的 xml 类似,只不过现在每个项目有两个属性而不是一个。

在我的课堂上:

@XmlPath("items/item/@type")
@XmlAttribute
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();

感谢我之前问题的答案,我能够解组type属性到列表中。brandList,然而,是空的。如果我注释掉注释itemList(所以它没有被 JAXB/MOXy 填充)然后brandList包含正确的值。

看来我只能使用 XPath 将单个属性解组到列表中。这是设计使然还是我配置有问题?

Update:看来我也无法从元素中解组文本和属性。如果我的类映射如下:

@XmlPath("items/item/text()")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
@XmlPath("items/item/@brand")
@XmlAttribute
private ArrayList<String> brandList = new ArrayList<String>();

brandList在这种情况下也是空的。如果我交换顺序和地图brandList首先然后itemList是空的。就好像第一个映射消耗了该元素,因此无法读取基于该元素或其属性的进一步值。


简答

这不是 @XmlPath 当前支持的用例EclipseLink MOXy http://www.eclipse.org/eclipselink/moxy.php。我已为此输入了以下增强请求,请随时添加其他信息以为此错误投票:

  • https://bugs.eclipse.org/355225 https://bugs.eclipse.org/355225

长答案

MOXy 将支持映射:

@XmlPath("items/item/@type")
private ArrayList<String> itemList = new ArrayList<String>();

to:

<test>
  <items>
    <item type="cookie"/>
    <item type="crackers"/>
  </items>
</test>

but not:

@XmlPath("items/item/@type")
private ArrayList<String> itemList = new ArrayList<String>();

@XmlPath("items/item/@brand")
private ArrayList<String> brandList = new ArrayList<String>();

to:

<test>
  <items>
    <item type="cookie" brand="oreo"/>
    <item type="crackers" brand="ritz"/>
  </items>
</test>

解决方法

您可以引入一个中间对象(Item)来映射此用例:

@XmlElementWrapper(name="items")
@XmlElement(name="item")
private ArrayList<Item> itemList = new ArrayList<Item>();

 

public class Item {

    @XmlAttribute
    private String type;

    @XmlAttribute
    private String brand;
}

欲了解更多信息@XmlPath

  • http://blog.bdoughan.com/2010/07/xpath-based-mapping.html http://blog.bdoughan.com/2010/07/xpath-based-mapping.html
  • http://blog.bdoughan.com/2010/09/xpath-based-mapping-geocode-example.html http://blog.bdoughan.com/2010/09/xpath-based-mapping-geocode-example.html
  • http://blog.bdoughan.com/2011/03/map-to-element-based-on-attribute-value.html http://blog.bdoughan.com/2011/03/map-to-element-based-on-attribute-value.html
  • http://blog.bdoughan.com/2011/08/binding-to-json-xml-geocode-example.html http://blog.bdoughan.com/2011/08/binding-to-json-xml-geocode-example.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MOXy 和 XPath,是否可以解组两个属性列表? 的相关文章

随机推荐

  • MPdf - 全页尺寸图像,但仅适用于单页

    我知道有类似的问题 但没有一个能解决我的问题 我想对 mPDF 执行以下操作 Page 1 Text for item 1 Page 2 Full width and height image to cover the page with
  • 如何在R中绘制不同颜色的直方图

    我的 csv 文件中有大约 500 个整数值的数据集 每个值都在 50 89 之间 我正在尝试在 R 中创建一个直方图 其中代表值 50 65 的条形为青铜色 66 74 为银色 75 89 为金色 到目前为止我的脚本如下 dat1 lt
  • 如何在 Android 中动态创建编辑文本

    我是 android 编程新手 我在动态创建文本字段时遇到问题 我想创建一个视图 其中有一个名为 创建文本字段 的按钮和两个编辑文本 其中一个编辑文本名称为 行 第二个编辑文本名称为 列 当用户在编辑文本中输入数字 假设行 2 和列 3 并
  • 定期发送自动电子邮件

    我有带有 PostgreSQL 数据库的 Windows 服务器 我在数据库中存储了员工数据 包括合同到期日期 我想在到期日之前 30 天为每位员工发送一封自动电子邮件 每个员工都有一个电子邮件帐户 最好的方法是什么 我正在考虑执行以下操作
  • Sql Server 2014 - 更新到 Windows 10 且无法连接到本地服务器

    最近 我将 Windows 从 8 更新到 10 突然我的 SQL Server 2014 停止工作 当我打开 Management Studio 并尝试连接到服务器 本地 时 出现以下错误 你们中有人遇到过类似的问题吗 在更新 Windo
  • 解析c#类文件以获取属性和方法[重复]

    这个问题在这里已经有答案了 可能的重复 C 解析器 https stackoverflow com questions 81406 parser for c sharp 假设我有一个简单的类 例如 winforms 应用程序中的文本框控件内
  • 如何比较 viewDidLoad 和 viewDidAppear? [复制]

    这个问题在这里已经有答案了 我如何比较viewDidLoad and viewDidAppear 最好的办法是在视图控制器中实现这两种方法 该控制器加载带有子视图的视图 最简单的是来自 NIB 并在每个方法中放置一个断点 当应用程序在每个断
  • SQL Server 视图 - 错误的命名约定?

    DECLARE TableName AS VARCHAR 250 DECLARE SQL AS VARCHAR 500 DECLARE ViewCheck as CURSOR SET ViewCheck CURSOR FOR SELECT
  • 有没有办法从应用程序的 .ipa 存档中查看应用程序的 .entitlements 文件?

    我认为创建 ipa 时我的应用程序的 entitlements 文件存在问题 因此我想检查权利文件的捆绑 ID 在构建之前 我使用一个相当复杂的构建脚本来更改其中的一些内容 所以我想看看最终的产品是什么 我知道曾经有一个 Entitleme
  • 何时实施和扩展? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 什么时候应该implement or extend使用 有哪些现实世界的例子 它是否正确 实施似乎是强制类中存在某些方法并且这些方法函数调用格式
  • 检查委托是否为空

    我正在阅读 Essential C 3 0 一书 想知道这是否是检查委托是否为 null 的好方法 class Thermostat public delegate void TemperatureChangeHandler float n
  • cbind() 正在更改日期格式

    我正在尝试创建数据框的子集 当我这样做时 R 会切换日期列的格式 知道为什么或如何解决这个问题吗 gt head spyPr2 Date Open High Low Close Volume Adj Close 1 12 30 2011 1
  • Julia 中的方法链接

    I read https github com JuliaLang julia issues 5571 https github com JuliaLang julia issues 5571这让我觉得我可以因为一些评论而打破这样的界限 a
  • 无法在 systemd 203/EXEC 中将 Gunicorn 作为服务运行

    我正在尝试使用 Gunicorn WSGI Nginx 部署 FlaskApp 我已经尝试让它工作一段时间了 除了我一直遵循的数字海洋指南之外找不到任何东西 下面是我目前状态下的文件 我尝试了几种不同的调整mywebapp service文
  • 如何在 Chromium 浏览器中创建文本或将文本转换为音频?

    在尝试确定解决方案时如何在 chromium 上使用 Web Speech API https stackoverflow com questions 44013933 how to use web speech api at chromi
  • 对从方法调用的方法进行单元测试

    我有一个角度应用程序和一个在单击时触发的方法 在这个方法中 我将一个值传递给另一个私有方法 ts file public onViewItem item Results void const ids item data id this an
  • SQlite实体框架ADO.net提供程序错误1.0.92.0

    我试图了解 SQlite 和实体框架如何交互 我在 Visual Studio 2013 中创建了一个新的控制台项目 我安装了 SQlite 1 0 92 的 nuget 包 我创建一个新的空模型 edmx 并尝试从静态示例数据库 例如 N
  • opengl物体移动一段距离后振动

    我有一个在地形上移动的物体 第三人称摄像机跟随它 当我将它向不同方向移动一段距离后 即使它没有移动并且摄像机围绕它旋转 它也开始摇晃或振动 这就是移动对象的代码 double delta engine getDeltaTime GLfloa
  • Eclipse 无法启动 (Ubuntu):JVM 终止。退出代码=2

    我安装 ubuntu 14 04 LTS 64位 之后安装 Eclipse Luno Standard for 64bit 安装 Jdk 并使用以下链接按照设置 jdk 的所有步骤进行操作 http www wikihow com Inst
  • 使用 MOXy 和 XPath,是否可以解组两个属性列表?

    请注意 这不是我问的另一个问题的重复 使用 MOXy 和 XPath 是否可以解组属性列表 https stackoverflow com questions 6907225 with moxy and xpath is it possib