Java解析调用webservice服务的返回XML串

本文由Markdown语法编辑器编辑完成。

1. 需求分析;

已知当在调用某一webservice的服务时,如果调用成功,会接受到该服务的返回XML串。后端在获取了该XML原始串时,需要进行解析,将其解析为JSON格式,以便于发送到前台,供前台页面显示和交互。

2. 解决方案:

该XML的原始形式为:

<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
        <MZHLYYServiceResponse xmlns="http://tempuri.org">
            <MZHLYYServiceResult>
                <![CDATA[<CrossSectionPrescriptionAuditResult><ClientType>c1</ClientType><Prescriptions><Prescription><PrescriptionId>10075449</PrescriptionId><AuditResultCode>1</AuditResultCode></Prescription><Prescription><PrescriptionId>10075450</PrescriptionId><AuditResultCode>2</AuditResultCode></Prescription></Prescriptions></CrossSectionPrescriptionAuditResult>]]>
            </MZHLYYServiceResult>
        </MZHLYYServiceResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我希望能够解析到的核心内容是,对于每一个Prescription, 都有两个属性: PrescriptionId和AuditResultCode。这样在返回的XML中有两个Prescription, 因此返回的应该是一个JSON数组。

[
    {
        "PrescriptionId": 10075449,
        "AuditResultCode": 1
    },
    {
        "PrescriptionId": 10075450,
        "AuditResultCode": 2
    }
]

3. 参考链接:

1.dom4j解析xml字符串实例 https://www.cnblogs.com/macula/archive/2011/07/27/2118003.html
2. 在java中使用dom4j解析xml
https://www.cnblogs.com/nerxious/archive/2013/05/04/3060263.html
3. Extract string between two strings in java
https://stackoverflow.com/questions/16597303/extract-string-between-two-strings-in-java/16597374

已标记关键词 清除标记
相关推荐
第一次接触接口 ,对方给了我两个资料,一个说明,main.java 就是让我取出我们数据库中的数据,name不变,根据name取出数据存入value写成xml,在线等大神帮助 1.说明: 功能:数据归档 方法定义: int archive(String username,String password,String objectXml, String params) 参数说明: Username:数据归档的用户名。 Password:数据归档的密码。 objectXml:归档数据的XML形式,示例如下: <?xml version="1.0" encoding="GBK"?> ![图片说明](https://img-ask.csdn.net/upload/201611/07/1478528985_615457.jpg) params:归档参数信息,请保持空字符 返回值: 归档的状态。 状态说明: 1:代表归档成功,2:代表登录失败,3:代表xml解析失败,4:代表数据唯一性检测失败,5:代表必填项为空,6:代表字段值类型不正确 7:代表不符合规定的值范围,8:代表格式校验不正确。 下面是方法: package cn.csg.soa.dagl; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub ReferArchiveService referArchiveService = new ReferArchiveServiceImplService() .getReferArchiveServiceImplPort(); File f = new File("E:/Archivedata.xml"); FileInputStream in = new FileInputStream(f); byte b[] = new byte[(int) f.length()]; // 创建合适文件大小的数组 in.read(b); // 读取文件中的内容到b[]数组 in.close(); System.out.println(new String(b)); referArchiveService.archive("gly", "123qwe!@#", new String(b), ""); System.out.println(new String(b)); System.out.println(new String(b)); } }
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页