我需要查询一些端点的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它说丢失的数据。有人有什么建议吗?蒂娅!
发布于 2018-03-02 14:34:00
您的XML没有名称空间,而JAXB类有名称空间http://wadl.dev.java.net/2009/02。
要么向XML添加命名空间,要么将其从JAXB类中删除。
https://stackoverflow.com/questions/49070997
复制相似问题