我无法使用 jaxB 解析以下 xml 文件<?xml version="1.0" encoding="utf-8"?><Root> <Status>1</Status> <StatusMessage/> <ResultSet> <Columns count="2"> <col type="Decimal">COL1</col> <col type="String">COL2</col> </Columns> <Rows count="3"> <row index="0"> <col index="0">1</col> <col index="1">ABC</col> </row> <row index="1"> <col index="0">2</col> <col index="1">DEF</col> </row> <row index="2"> <col index="0">3</col> <col index="1">XYZ</col> </row> </Rows> </ResultSet></Root>以下是我如何编写java对象 @XmlRootElement(name = "Root") @XmlAccessorType(XmlAccessType.FIELD) public class Root{ @XmlElement(name="Status") private String status; @XmlElement(name="StatusMessage") private String statusMessage; @XmlElement(name="ResultSet") private ResultSet resultSet; }@XmlAccessorType(XmlAccessType.FIELD)@XmlRootElement(name="ResultSet")public class ResultSet { @XmlElement(name = "Columns") MyColumns cols; @XmlElementWrapper(name="Rows") @XmlElement(name = "row") List<MyRow> all;}@XmlRootElement(name = "Columns")public class MyColumns { @XmlElement(name = "col") private String columns1; @XmlElement(name = "col") private String columns2;}@XmlRootElement(name = "row")@XmlAccessorType(XmlAccessType.FIELD)public class MyRows { @XmlElement(name = "col") private String row1; @XmlElement(name = "col") private String row2;}我在解析时没有得到任何异常,但MyRows和MyColumns中的数据为空。我怀疑的是MyRows中的XMLElement名称。对于这两个变量,名称都是“col”。因此,它可能无法正确映射数据。解析此 xml 文件的正确方法是什么?
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
您的 POJO 应该更匹配您的行和列。我们创建了一个 Column 类(我选择了一个同时在 MyRow 和 MyColumns 中使用的类 - 两者都有属性)。
@XmlAccessorType(XmlAccessType.FIELD)
public class Column {
@XmlAttribute
private String type;
@XmlAttribute
private String index;
@XmlValue
private String value;
}
更改 MyColumns 以使用它:
@XmlRootElement(name = "Columns")
public class MyColumns {
@XmlElement(name = "col")
private List<Column> columns;
}
MyRow也是如此:
@XmlRootElement(name = "row")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyRow {
@XmlAttribute
private String index;
@XmlElement(name = "col")
private List<Column> columns;
}
添加回答
举报
0/150
提交
取消