gpt4 book ai didi

java - 使用 JAXB 解析具有更多子元素的 XML

转载 作者:行者123 更新时间:2023-12-01 09:25:40 24 4
gpt4 key购买 nike

我有这样的XML,我想将它解析为Java对象。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CreatePreOrderResponse>
<Errors>
<Error>
<Code>code 1</Code>
<Message>message 1</Message>
<ErrorElement>element 1</ErrorElement>
</Error>
<Error>
<Code>code 2</Code>
<Message>message 2</Message>
<ErrorElement>element 2</ErrorElement>
</Error>
</Errors>
</CreatePreOrderResponse>

我使用 JAXB 来解析没有“子元素”的 XML 字符串,只有一个元素,其值处于 errors 级别。

问题:我想知道如何获取 Errors 元素中的所有 Error 元素,例如进入 CreatePreOrderResponse 对象中的列表? 是否可以使用 JAXB unmarshaller 自动解析它,我是否必须遍历 XML 并手动解析它?

<小时/>

注意:仅供引用,这对我有用 - 我使用这些类来解析此 XML(没有子元素)。

<CreatePreOrderResponse>
<PreOrder>
<ID>123456789</ID>
</PreOrder>
</CreatePreOrderResponse>

BtnPreorderResponse

@XmlRootElement(name = "CreatePreOrderResponse")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso(BtnDocLine.class)
public class BtnPreorderResponse {

@XmlElement(name = "PreOrder")
private BtnPreorder btnPreorder;

@XmlElement(name = "Errors")
private BtnErrorListType btnErrorListType;

public BtnPreorder getBtnPreorder() {
return btnPreorder;
}

public void setBtnPreorder(BtnPreorder btnPreorder) {
this.btnPreorder = btnPreorder;
}

public BtnErrorListType getBtnErrorListType() {
return btnErrorListType;
}

public void setBtnErrorListType(BtnErrorListType btnErrorListType) {
this.btnErrorListType = btnErrorListType;
}

@Override
public String toString() {
return "BtnPreorderResponse{" +
"btnPreorder=" + btnPreorder +
", btnErrorListType=" + btnErrorListType +
'}';
}
}

Btn预购

@XmlRootElement(name = "PreOrder")
@XmlAccessorType(XmlAccessType.FIELD)
public class BtnPreorder {

@XmlElement(name = "ID")
private long id;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

@Override
public String toString() {
return "BtnPreorder{" +
"id=" + id +
'}';
}
}

最佳答案

我想您已经将单个错误子句实现为 BtnErrorType 类。现在是他们的名单:

@XmlType(name = "Errors")
@XmlAccessorType(XmlAccessType.FIELD)
public class BtnErrorListType {
@XmlElement(name = "Error")
private ArrayList<BtnErrorType> btnError;

...
public ArrayList<BtnErrorType> getBtnError() {
if (btnError == null)
btnError = new ArrayList<BtnErrorType>();
return btnError;
}
...
}

注意,只有 getter,如果你想向列表添加元素,你应该调用它。

关于java - 使用 JAXB 解析具有更多子元素的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com