您可以使用StAX解析器来解析SOAP消息,然后将其前进
XMLStreamReader到
getNumberResponse元素,并使用带有类参数的unmarshal方法。Java
SE 6中包含一个StAX解析器,但是您需要为Java SE
5下载一个StAX解析器。Woodstox是流行的StAX解析器。
响应
package forum11465653;public class Response { private long number; public long getNumber() { return number; } public void setNumber(long number) { this.number = number; }}
演示版
An
XMLStreamReader有一个
NamespaceContext。在
NamespaceContext知道所有当前级别活动命名空间声明。您的JAXB(JSR-222)实现将能够利用它来获取必要的信息。
package forum11465653;import java.io.FileReader;import javax.xml.bind.*;import javax.xml.stream.*;public class Demo { public static void main(String[] args) throws Exception{ XMLInputFactory xif = XMLInputFactory.newFactory(); XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("src/forum11465653/input.xml")); xsr.nextTag(); // Advance to Envelope tag xsr.nextTag(); // Advance to Body tag xsr.nextTag(); // Advance to getNumberResponse tag System.out.println(xsr.getNamespaceContext().getNamespaceURI("ns")); JAXBContext jc = JAXBContext.newInstance(Response.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); JAXBElement<Response> je = unmarshaller.unmarshal(xsr, Response.class); System.out.println(je.getName()); System.out.println(je.getValue()); }}
输出量
http://example.com/{http://example.com/}getNumberResponseforum11465653.Response@781f6226
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)