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

嵌套XML解组到POJO类

姚昊焱
2023-03-14

我对JAXB编组和反编组是新手,我试图将嵌套XML反编组到Java POJO类,但在反编组对象中得到了null。另外,我想确认是否为相应的XML正确创建了POJO类。

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<ebo:EBO xmlns:ebo="http://service.gap.com/schemas/Tracking" xmlns:esb="http://service.gap.com/schemas/ESBHeader" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.service.gap.com/DeleteItemEBO DeleteItemEBO.xsd">
 <esb:ESBHeader>
  <esb:EnvironmentName>Development</esb:EnvironmentName>
  <esb:VersionNbr>1.0</esb:VersionNbr>
  <esb:BusinessEvent>
   <esb:TransactionTypeCode>Delta</esb:TransactionTypeCode>
   <esb:Description></esb:Description>
   <esb:Timestamp>2017-10-26T16:30:13.154-07:00</esb:Timestamp>
   <esb:EventID>01</esb:EventID>
   <esb:TotalRecordCount>1</esb:TotalRecordCount>
  </esb:BusinessEvent>
 </esb:ESBHeader>
 <ebo:EBOPayload>
  <ebo:Item ebo:ActionTypeCode="DELETE">
   <ebo:BrandId>2</ebo:BrandId>
   <ebo:ItemID>12345</ebo:ItemID>
   <ebo:PurgeLevelCd>k</ebo:PurgeLevelCd>
   <ebo:PurgeDate>2017-10-26</ebo:PurgeDate>
  </ebo:Item>
 </ebo:EBOPayload>
</ebo:EBO>
public class JAXBExample {
 public static void main(String [] args){
try{
File file = new File("C:\\file.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);

    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    EBO ebo = (EBO) jaxbUnmarshaller.unmarshal(file);
    System.out.println(EBO.getPayload());
}
catch(Exception ex){
System.out.println("JAXB Exception" +ex);
}
@XmlRootElement(name = "ebo")
public class EBO {
private ESBHeader esbHeader;
private EBOPayload eboPayload;

public ESBHeader getEsbHeader() {
    return esbHeader;
}
@XmlElement(name = "ESBHeader")
public void setEsbHeader(ESBHeader esbHeader) {
    this.esbHeader = esbHeader;
}
public EBOPayload getEboPayload() {
    return eboPayload;
}
@XmlElement(name = "EBOPayload")
public void setEboPayload(EBOPayload eboPayload) {
    this.eboPayload = eboPayload;
}
}
public class ESBHeader {
private String environmentName;
private String versionNbr;
private List<BusinessEvent> businessEvent;

public String getEnvironmentName() {
    return environmentName;
}

@XmlElement(name = "EnvironmentName")
public void setEnvironmentName(String environmentName) {
    this.environmentName = environmentName;
}

public String getVersionNbr() {
    return versionNbr;
}

@XmlElement(name = "VersionNbr")
public void setVersionNbr(String versionNbr) {
    this.versionNbr = versionNbr;
}

public List<BusinessEvent> getBusinessEvent() {
    return businessEvent;
}

@XmlElement(name = "BusinessEvent")
public void setBusinessEvent(List<BusinessEvent> businessEvent) {
    this.businessEvent = businessEvent;
}
}
public class BusinessEvent {
private String transactionTypeCode;
private String timestamp;
private String eventID;
private String totalRecordCount;
private String description;

public String getTransactionTypeCode() {
    return transactionTypeCode;
}

@XmlElement(name = "TransactionTypeCode")
public void setTransactionTypeCode(String transactionTypeCode) {
    this.transactionTypeCode = transactionTypeCode;
}

public String getDescription() {
    return description;
}

@XmlElement(name = "Description")
public void setDescription(String description) {
    this.description = description;
}

public String getTimestamp() {
    return timestamp;
}

@XmlElement(name = "Timestamp")
public void setTimestamp(String timestamp) {
    this.timestamp = timestamp;
}

public String getEventID() {
    return eventID;
}

@XmlElement(name = "EventID")
public void setEventID(String eventID) {
    this.eventID = eventID;
}

public String getTotalRecordCount() {
    return totalRecordCount;
}

@XmlElement(name = "TotalRecordCount")
public void setTotalRecordCount(String totalRecordCount) {
    this.totalRecordCount = totalRecordCount;
}

}
public class EBOPayload {
private List<Item> item;

public List<Item> getItem() {
    return item;
}
@XmlElement(name = "Item")
public void setItem(List<Item> item) {
    this.item = item;
}
}
public class Item {
private String brandId;
private String itemID;
private String purgeLevelCd;
private String purgeDate;

public String getBrandId() {
    return brandId;
}
@XmlElement(name = "BrandId")
public void setBrandId(String brandId) {
    this.brandId = brandId;
}

public String getItemID() {
    return itemID;
}

@XmlElement(name = "ItemID")
public void setItemID(String itemID) {
    this.itemID = itemID;
}
public String getPurgeLevelCd() {
    return purgeLevelCd;
}

@XmlElement(name = "PurgeLevelCd")
public void setPurgeLevelCd(String purgeLevelCd) {
    this.purgeLevelCd = purgeLevelCd;
}

public String getPurgeDate() {
    return purgeDate;
}
@XmlElement(name = "PurgeDate")
public void setPurgeDate(String purgeDate) {
    this.purgeDate = purgeDate;
}
}

共有1个答案

慕容嘉熙
2023-03-14

标签@xmlrootelement和@xmlelement引用链接中可以添加另一个属性'namespace':http://www.mysamplecode.com/2012/06/jaxb-convert-java-object-xml.html

 类似资料:
  • 问题内容: 因此,可以说JSON响应为: 当您必须首先访问数据时,如何获得值“ value1”和“ value2”? 如果字段位于根目录,那么我可以让该方法返回带有这些字段名称的POJO。 我基本上希望下面的工作。 问题答案: 您可以尝试以下代码,使用Gson库将json字符串转换为具有必填字段的Pojo对象。 或者,您可以定义嵌套的Pojo类来解析它。 编辑:尝试下面的代码以使用Retrofit

  • 问题内容: http://play.golang.org/p/f6ilWnWTjm 我正在尝试解码以下字符串,但仅获取空值。 如何在Go中解码嵌套的JSON结构? 我想将以下内容转换为地图数据结构。 问题答案: 在Go中使用嵌套结构来匹配JSON中的嵌套结构。 这是一个如何处理示例JSON的示例: 游乐场链接 您还可以对内部结构使用匿名类型: 游乐场链接 或外部和内部结构: 游乐场链接 如果您不知

  • 问题内容: 有一个小问题上的话题,但他们都不来覆盖我的情况,因此我创建一个新的。 我有如下的JSON: 有没有办法解组嵌套的bar属性并将其直接分配给struct属性而不创建嵌套的struct? 我现在采用的解决方案如下: 这是简化版本,请忽略详细信息。如您所见,我希望能够解析并将其值分配给 我见过有人在使用地图,但这不是我的情况。除了一些特定的元素外,我基本上不关心(一个大对象)的内容。 在这种

  • 抱歉长帖,提前感谢! 在我的JAXB中(代码如下),我有一组值集,其中内部集被包装成一个容器类。所以,我有一组值容器,其中一个值是一个泛型类。问题:除非选择的泛型类是硬编码的,否则值不会得到解析。 关于XML的说明: >

  • 我有一个POJO类型: 现在我的POJO被分成两个表x和y,其中y有日期,x有名称,它们通过id连接如下: 此外,现在我想从mybatis映射器中选择并将其映射到给定的pojo。我在映射日期时遇到问题。 我试着使用collection,但在日期内我没有任何财产。如何填充日期字段?

  • 给出以下POJO示例:(假设所有属性都是getter和setter) 可以轻松地查询数据库(在我的例子中是postgres),并使用BeanPropertyRowMapper填充消息类列表,其中db字段与POJO中的属性匹配:(假设db表具有与POJO属性对应的字段)。 生成已填充关联用户的消息列表 用例: 最终,这些类作为序列化对象从Spring控制器传递回来,这些类被嵌套,这样得到的JSON/