java - 解码 XmlType 以在 Java 中进行单元测试

标签 java web-services junit jaxb

我正在编写一个 Java 类,它获取 Web 服务的输出并填充一个 bean。该服务返回由 JAXB 生成的代码转换为 Java 对象的 XML。为了对此进行单元测试,我想为各个部分创建 XML 片段并将它们转换为相应的对象以进行测试。

JAXB 类开始:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ItemDef", namespace = "http://localhost/schema", propOrder = {
    "a",
    "b",
    "c"
})
public class ItemDef {

我有以下 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Item xmlns="http://localhost/schema">
</Item>

以及以下 Java 代码:

JAXBContext context = JAXBContext.newInstance(ItemDef.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
ItemDef item = (ItemDef) unmarshaller.unmarshal(xmlFile);

导致以下异常:

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://localhost/schema", local:"Item"). Expected elements are (none)

我尝试了名称的不同变体,所以这似乎不是问题所在。我认为问题在于 ItemDef 是一种类型和 @XmlType 而不是 @XmlElement。有没有办法让 JAXB 接受这个部分组件?

最佳答案

您错过了 ItemDef 顶部的 @XmlRootElement(name="Item",namespace="http://localhost/schema") 注释

关于java - 解码 XmlType 以在 Java 中进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893351/

相关文章:

java - jsp c :redirect self-referral

java - 线程的顺序执行卡住

c# - 通过 C# 服务引用使用 Java Web 服务

asp.net - 如果我的网站是 HTTPS,是否每次调用数据或静态页面也必须是 HTTPS?

java - 从 Fragment 类调用 Web 服务 (API) 的正确方法

Java JUnit 无法解析import org

java - JUnit 测试后多线程应用程序将无法运行

java - 多图 Guava 值

java - 获取 "connection timeout"而不是 "connection refused"

java - 测试线程代码java