gpt4 book ai didi

java - JAXB 解码异常

转载 作者:行者123 更新时间:2023-12-02 03:13:26 26 4
gpt4 key购买 nike

我是 Jaxb 新手,在解析简单 XML 时遇到问题。有问题的 XML 如下所示:

<tables>
<table id="1" >
<schema>validator_test</schema>
<name>test1</name>
<rowCountToValidate>6</rowCountToValidate>
<columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
<additionalColumns>column1,column2</additionalColumns>
</table>
<table id="2">
<schema>validator_test</schema>
<name>validate_external1</name>
<rowCountToValidate>2</rowCountToValidate>
<columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
<additionalColumns>column1,column2</additionalColumns>
</table>
<table id="3">
<schema>validator_test</schema>
<name>Test_View1</name>
<rowCountToValidate>2</rowCountToValidate>
<columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
<additionalColumns>column1,column2</additionalColumns>
</table>
</tables>

用于解码的 Jaxb 类是:-

@XmlRootElement(name = "table")
@XmlType(propOrder = { "name", "schema", "rowCountToValidate","columnTypeCheckRequired","additionalColumns","targetName"})
@Service
public class TableInfo {

private static final boolean TRUE = true;
@Value("${default.row.count.to.validate}")
private Integer defaultRowCountToValidate;

/**
*
*/
public TableInfo() {
}

private String name;
private String schema;
private Integer rowCountToValidate;
private String targetName;
private String columnTypeCheckRequired;
private String additionalColumns;

@XmlElement(name = "name")
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@XmlElement(name = "schema")
public String getSchema() {
return schema;
}

public void setSchema(String schema) {
this.schema = schema;
}

@XmlElement(name = "rowCountToValidate")
public Integer getRowCountToValidate() {
return rowCountToValidate;
}

@XmlElement(name = "columnTypeCheckRequired")
public String getColumnTypeCheckRequired() {
return columnTypeCheckRequired;
}

public void setColumnTypeCheckRequired(String columnTypeCheckRequired) {
this.columnTypeCheckRequired = columnTypeCheckRequired;
}


@XmlElement(name = "additionalColumns")
public String getAdditionalColumns() {
return additionalColumns;
}

public void setAdditionalColumns(String additionalColumns) {
this.additionalColumns = additionalColumns;
}


public void setRowCountToValidate(Integer rowCountToValidate) {
// If user configured value is not null and greater than zero then set
// the value otherwise use default value
if ((null != rowCountToValidate) && (rowCountToValidate.intValue() > 0)) {
this.rowCountToValidate = rowCountToValidate;
}else {
this.rowCountToValidate = defaultRowCountToValidate;
}
}

@XmlElement(name = "targetName")
public String getTargetName() {
return targetName;
}

public void setTargetName(String targetName) {
this.targetName = targetName;
}


@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

但是,我遇到了以下异常:-

`JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"tables"). Expected elements are <{tables}table>`

如果有人能指出我正在做的错误,我将不胜感激。我对此很陌生,不太了解 jaxb 的工作原理。

最佳答案

您需要创建类 Tables@XmlRootElement(name = "tables")该类必须包含 table类型为 TableInfo 的字段。

当您解码示例 xml 时,您需要传递 Tables解码器类。

关于java - JAXB 解码异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716575/

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