当前位置: 首页 > 知识库问答 >
问题:

使用多个同名元素解组XML JAXB

安泰平
2023-03-14

我正在尝试解组一个包含多个同名元素的XML文档。我不确定是否需要创建bean的Arraylist并将其传递给解组器。我希望有人能给我一些建议来解决这个问题。我试图解析的XML是一个SOAP响应,但我去掉了信封,所以我只有它的主体,它看起来是这样的:

<return>
    <row>
        <fkdevice>bddc228e-4774-18b3-9c64-e218cbef7a8x</fkdevice>
    </row>
    <row>
        <fkdevice>74a5a260-bbd9-0491-7c58-0b1983180d2c</fkdevice>
    </row>
    <row>
        <fkdevice>312b5326-d7f1-4fb6-b1d9-dd96bb016152</fkdevice>
    </row>
    <row>
        <fkdevice>ed110481-e1e1-4659-ae09-1d23d888292b</fkdevice>
    </row>
</return>

这是从一个包含50多个字段的表返回的,但我创建了一个testBean,并且我定义了fkdevice只是为了使其简单,我的bean看起来像这样:

package beans;
//imports    

@XmlRootElement(name="return")
public class testBean {
   //I think I need an arraylist here because I have multiple elements with teh same name.
   public ArrayList<string> fkdevice;

   public ArrayList<String> getFkdevice(){
       return fkdevice;
   }

   public void setFkdevice(ArrayList<String> fkdevice){
       this.fkdevice = fkdevice;
   }
}

这给了我一个错误:IllegalAnnotationExceptionsClass的1个计数有两个同名的属性“fkdevice”,它指向getter和setter。

任何信息都可能有帮助,提前谢谢

共有2个答案

郝杰
2023-03-14

您的字段和方法都是公共的。默认情况下,JAXB绑定每个公共字段和每个getter/setter对。

一种解决方案是使用@XmlAccessorType指定将字段和仅字段绑定到 XML。

@XmlRootElement(name="return")
@XmlAccessorType( XmlAccessType.FIELD )
public class testBean {

    @XmlElement( name="fkdevice" )
    public ArrayList<string> fkdevice;
    ...
}
陆敏学
2023-03-14

也许是这样的:

@XmlRootElement(name="return")
public class returnBean {
   private ArrayList<Row> rows;

   public ArrayList<Row> getRows(){
       return rows;
   }

   public void setRows(ArrayList<Row> rows){
       this.rows = rows;
   }
}

请注意,该字段现在是私有的。

你可能不需要在这里做注释:

public class Row {
    private String fkdevice;

    public String getFkdevice() {
        return fkdevice;
    }

    public void setFkdevice(String val) {
        fkdevice = val;
    }
}
 类似资料:
  • 我认为这对真正理解JAXB绑定文件的人来说很容易... 如何配置JAXB将多个元素解组到同一个类中? 注意:我想避免在我的项目中添加另一个依赖项(比如MOXy)。理想情况下,这可以通过注释或自定义绑定文件来实现。 我有一个XML文档,其中包含许多相同元素的变体——每个元素都有完全相同的属性。使用下面的示例,我只关心“员工”,但XML指定了“董事、经理和员工”。为了我们的目的,这些都是同一个父类的子

  • 这是我的xml结构 因此,我尝试使用JAXB解组将这个xml绑定到一个类,但结果一无所获。 我在想,我有两个基本元素,课程和科目,所以我根据这些元素建立了两个类 此选项用于控制课程标签 这是为了控制主题标签。 我做了一些字符串函数,结果什么都没有。有什么问题吗?

  • 问题内容: 我认为对于真正了解JAXB绑定文件的人来说这很容易… 基本问题 如何配置JAXB将多个元素解组到同一类中? 注意:我想避免向我的项目中添加另一个依赖项(例如MOXy)。 理想情况下,这可以通过注释或自定义绑定文件来完成。 背景 我有一个XML文档,其中包含许多相同元素的变体,每个变体具有完全相同的属性。在下面的示例中,我只关心“雇员”,但是XML指定了“董事,经理和职员”。出于我们的目

  • 您好帮助请把xml文件放在里面一些相同的元素,这些元素的内容不同,“name”属性。这些元素有不同的项目集,如何进行解咒?断续器: 我需要在Cdb和FmssSc中执行对象2的解组。我的尝试:通用元素-ServiceBroker.class 适配器.class Cdb.class FmssSc.class 演示: 错误:

  • 问题内容: 我具有以下XML结构,该结构跨多个XML元素对单个概念进行建模。此格式不在我的控制范围内。 我想在一个数据库中,我确实有控制权,并可以有一个更简单的模型此表,和领域。因此,我想在课堂上解组。 可以通过注释自动完成吗?我目前正在使用JAXB解组到单独的列表和类列表,然后在上对瞬态进行后处理,但是我认为必须有一种更简便的自动方式来映射这些元素。还是XSLT的工作? 可能会知道XML是作为H

  • 我有下面的xml结构: 有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。