java - XML 到域对象转换器的 XPath 替代品

标签 java xml

我们的 Java 应用程序从许多外部系统接收 XML 消息,我们希望从这些系统创建域对象。 我们没有这些文档的架构。

目前我们正在使用 XPath 从 XML 中提取字符串,然后在新域对象上调用 setter。我们使用自制的 XmlUtils 类来执行此操作。

foo.setBar(XmlUtils.number("/bar", document));

有哪些基于 Java 的替代方法不需要访问文档的架构?

最佳答案

注意:我是 EclipseLink JAXB (MOXy)领导,以及 JAXB 2.X ( JSR-222) 专家组的成员。

MOXy 提供了 @XmlPath 扩展,使您能够进行基于 XPath 的映射:

基于路径的映射

匹配foo元素下的bar元素:

@XmlPath("foo/bar/text()")
public int getBar() {
    return bar;
}

基于位置的映射

匹配第二个 bar 元素:

@XmlPath("bar[2]/text()")
public int getBar() {
    return bar;
}

基于谓词的映射

匹配具有 type 属性和值 foobar 元素:

@XmlPath("bar[@type='foo']/text()")
public int getBar() {
    return bar;
}

合并

以上所有概念都可以一起使用:

@XmlPath("foo[2]/bar[@type='foo']/text()")
public int getBar() {
    return bar;
}

了解更多信息

关于java - XML 到域对象转换器的 XPath 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675430/

相关文章:

Java 泛型 - 方法参数和方法返回类型的编译错误

java - 如何在java中的循环中初始化数组?

c# - XML全文件读取C#

xml - 推出您自己的 XML 解析器/XML 解析算法?

xml - gwt.xml 中可能的 user.agent 值是什么?

android - 如何在 activity(dot)xml 中包装 android 代码

java - java原始整数是设计的还是偶然的?

java - 使用回调对静态方法进行单元测试

java - 什么是NullPointerException,我该如何解决?

xml - 创建具有无限数量元素的 XML 模式