解组 WADL 时遇到问题

Having trouble unmarshalling a WADL

我需要查询一些端点的 WADL,并测试 WADL 中包含的所有端点。我正在使用 JaxB 将 WADL 解组为 POJO(也尝试了 Jackson,但出现了另一个错误)。

这是XML的开头:

<application>
  <grammars/>
      <resources base="https://gatewaydsapdev1.company.com/v2">
    <resource path="/contents">
      <resource path="/labels">
        <method name="GET">
          <request>
            <param name="include" style="query" type="string"/>
            <param name="q" style="query" type="string"/>
            <param name="offset" style="query" type="string"/>
            <param name="limit" style="query" type="string"/>
            <param name="flush" style="query" type="boolean"/>
          </request>
          <response>
            <representation element="Response" mediaType="application/json;charset=utf-8"/>
          </response>
        </method>
      </resource>
      ....

这是解组代码:

JAXBContext jaxbContext = JAXBContext.newInstance(WadlApplication.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

StringReader reader = new StringReader(xml);
WadlApplication application = (WadlApplication) unmarshaller.unmarshal(reader);

但是我得到这个例外:

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"application"). Expected elements are <{http://wadl.dev.java.net/2009/02}application>,<{http://wadl.dev.java.net/2009/02}doc>,<{http://wadl.dev.java.net/2009/02}grammars>,<{http://wadl.dev.java.net/2009/02}include>,<{http://wadl.dev.java.net/2009/02}link>,<{http://wadl.dev.java.net/2009/02}method>,<{http://wadl.dev.java.net/2009/02}option>,<{http://wadl.dev.java.net/2009/02}param>,<{http://wadl.dev.java.net/2009/02}representation>,<{http://wadl.dev.java.net/2009/02}request>,<{http://wadl.dev.java.net/2009/02}resource>,<{http://wadl.dev.java.net/2009/02}resource_type>,<{http://wadl.dev.java.net/2009/02}resources>,<{http://wadl.dev.java.net/2009/02}response>

我不知道如何为 ObjectFactory 提供它所说的缺失数据。有没有人有什么建议? TIA!

您的 XML 没有命名空间,而您的 JAXB 类 有命名空间 http://wadl.dev.java.net/2009/02.

将名称空间添加到 XML 或将其从 JAXB 类 中删除。