解析 XML 失败

调用 SOAP Web 服务后,我收到以下响应 XML 字符串。如何将响应解析回Java实体,以便我可以相应地处理和?我尝试使用以下代码,但不断收到错误ErrMsgStatus


Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"NewDataSet"). Expected elements are <{TransactionalSubmissionsSvcs}NewDataSet>

    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:726)

字符串中的示例响应


 <NewDataSet>

  <SubmissionResult>

    <Status>200</Status>

    <RefNo>363180319bigKj83i</RefNo>

    <ErrMsg>Successful</ErrMsg>

  </SubmissionResult>

</NewDataSet>

示例客户端 XML 解析器


    JAXBContext jaxbContext = JAXBContext.newInstance(NewDataSet.class);

    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();


    StringReader reader = new StringReader("Sample Response in String above");

    NewDataSet newDataSet = (NewDataSet) jaxbUnmarshaller.unmarshal(reader);

    System.out.println(newDataSet.getSubmissionResult());


幕布斯6054654
浏览 173回答 2
2回答

DIEA

看起来您的模型中有许多类。检查这行代码并检查是否导入了正确的代码,因为异常显示 marshaller 期望 .NewDataSetPOJOJAXBContext.newInstance(NewDataSet.class)importTransactionalSubmissionsSvcs.NewDataSet编辑前您没有提到您使用的工具。如果是杰克逊,您可以解析有效负载,如下所示:XMLimport com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.SerializationFeature;import com.fasterxml.jackson.dataformat.xml.XmlMapper;import java.io.File;import java.nio.file.Files;public class XmlMapperApp {&nbsp; &nbsp; public static void main(String[] args) throws Exception {&nbsp; &nbsp; &nbsp; &nbsp; String xml = "your xml";&nbsp; &nbsp; &nbsp; &nbsp; parse(xml);&nbsp; &nbsp; }&nbsp; &nbsp; public static void parse(String xml) throws Exception {&nbsp; &nbsp; &nbsp; &nbsp; XmlMapper xmlMapper = new XmlMapper();&nbsp; &nbsp; &nbsp; &nbsp; xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);&nbsp; &nbsp; &nbsp; &nbsp; JsonNode root = xmlMapper.readTree(xml);&nbsp; &nbsp; &nbsp; &nbsp; JsonNode result = root.at("/SendWithXMLResult");&nbsp; &nbsp; &nbsp; &nbsp; JsonNode jsonNode = xmlMapper.readTree(result.asText());&nbsp; &nbsp; &nbsp; &nbsp; JsonNode submissionResult = jsonNode.at("/SubmissionResult");&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(submissionResult.get("Status"));&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(submissionResult.get("ErrMsg"));&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(submissionResult.get("RefNo"));&nbsp; &nbsp; }}如果已准备好模型,则可以使用方法直接反序列化到该模型。POJOXMLreadValue

眼眸繁星

找到原因,通过删除namespace = "TransactionalSubmissionsSvcs"@javax.xml.bind.annotation.XmlSchema(namespace&nbsp;=&nbsp;"TransactionalSubmissionsSvcs",elementFormDefault&nbsp;=&nbsp;javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package&nbsp;com.mailadapter;成为@javax.xml.bind.annotation.XmlSchema(elementFormDefault&nbsp;=&nbsp;javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package&nbsp;com.mailadapter;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java