如何告诉 JAXB 该元素是根的子元素?
How to tell JAXB that, the element is a Child of the Root?
我有一些 XML 格式的测试数据,我想映射到 POJO。
<Root>
<Child1>
<Data>
</Data>
</Child1>
<Child2>
<Data>
</Data>
</Child2>
</Root>
Child1 是第一个 Object,Child2 是第二个。
JAXBContext context = JAXBContext.newInstance(classesToLoad);
Unmarshaller um = context.createUnmarshaller();
Object obj = (Object) um.unmarshal(data);
Object 在这种情况下只是一个占位符
@Getter
@Setter
@XmlRootElement(name = "TestData")
public class Child1 {
@XmlElement(name = "ID")
private String ID;
}
.
这是我现在正在使用的代码,但我遇到了这个异常:
javax.xml.bind.UnmarshalException: unexpected Element (URI:"",
lokal:"TestData"). expectected elements are: Child1
移动注释
@XmlRootElement(name = "TestData")
到你的根 class 并将其更改为
@XmlRootElement(name = "Root")
我相信你会需要
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Child1")
在 Child1 class.
再试一次。
异常告诉你的是它期待一个名称为 TestData 的元素,名称空间为“”(你现在可以忽略名称空间,因为它是空白的,但花一两分钟时间看一下 this,因为它是第一次使用 XML 时可能会让您感到困惑),这是因为您将根元素定义为 TestData.
此外,您提供的数据示例似乎与您设计的不符class。
<Child1>
<Data>
</Data>
</Child1>
public class Child1 {
@XmlElement(name = "ID")
private String ID;
}
我不知道您是否为了更简洁的问题而为简洁起见替换了随附的数据,但是您的 Java 对象将更类似于此 XML.
<Child1>
<ID>[String ID value]</ID>
</Child1>
我有一些 XML 格式的测试数据,我想映射到 POJO。
<Root>
<Child1>
<Data>
</Data>
</Child1>
<Child2>
<Data>
</Data>
</Child2>
</Root>
Child1 是第一个 Object,Child2 是第二个。
JAXBContext context = JAXBContext.newInstance(classesToLoad);
Unmarshaller um = context.createUnmarshaller();
Object obj = (Object) um.unmarshal(data);
Object 在这种情况下只是一个占位符
@Getter
@Setter
@XmlRootElement(name = "TestData")
public class Child1 {
@XmlElement(name = "ID")
private String ID;
}
.
这是我现在正在使用的代码,但我遇到了这个异常:
javax.xml.bind.UnmarshalException: unexpected Element (URI:"", lokal:"TestData"). expectected elements are: Child1
移动注释
@XmlRootElement(name = "TestData")
到你的根 class 并将其更改为
@XmlRootElement(name = "Root")
我相信你会需要
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Child1")
在 Child1 class.
再试一次。
异常告诉你的是它期待一个名称为 TestData 的元素,名称空间为“”(你现在可以忽略名称空间,因为它是空白的,但花一两分钟时间看一下 this,因为它是第一次使用 XML 时可能会让您感到困惑),这是因为您将根元素定义为 TestData.
此外,您提供的数据示例似乎与您设计的不符class。
<Child1>
<Data>
</Data>
</Child1>
public class Child1 {
@XmlElement(name = "ID")
private String ID;
}
我不知道您是否为了更简洁的问题而为简洁起见替换了随附的数据,但是您的 Java 对象将更类似于此 XML.
<Child1>
<ID>[String ID value]</ID>
</Child1>