问题场景:如今请求一个接口,接口返回的是xml格式的数据

内容如下:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetDonorInfoResponse xmlns="http://www.shinow.com.cn/"><GetDonorInfoResult>{"Value":[{"Name":"唐承模","CollectDate":"2014-09-28 10:18:00","Volume":"300","DonKindID":"0","IssueDate":"2014-10-14 16:45:58","Picture":"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"}],"ExceptionInfo":null}</GetDonorInfoResult></GetDonorInfoResponse></soap:Body>
</soap:Envelope>

要提取的是GetDonorInfoResult里面的数据

代码如下:

<?php
// phpinfo();header("Content-Type: text/html; charset=utf-8");// 首先检测是否支持curlif (!extension_loaded("curl")) {trigger_error("对不起,请开启curl功能模块!", E_USER_ERROR);}// 构造xml数据$xmlData = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetDonorInfo xmlns="http://www.shinow.com.cn/"><userName>WX1</userName><password>111</password><identityCode>440881199205295514</identityCode><name>唐承模</name></GetDonorInfo></soap:Body>
</soap:Envelope>';$url = 'http://127.0.0.1:5566/NI2/ShundeWebService.asmx?WSDL'; //接收xml数据的文件$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_POST, 1);  // post 请求curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type:text/xml; charset=utf-8"));    // 一定要定义content-type为xml,要不然默认是text/html!curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlData);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); // PHP脚本在成功连接服务器前等待多久,单位秒curl_setopt($curl, CURLOPT_HEADER, 0);$result = curl_exec($curl);//curl_close($curl);$xmlObj = new SimpleXMLElement($result);$xmlObj->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');$arr=$xmlObj->xpath("soap:Body");echo "<pre>";print_r(json_decode($arr[0]->GetDonorInfoResponse->GetDonorInfoResult[0],true));exit;

核心代码是这些:

 //加载xml$xmlObj = new SimpleXMLElement($result);//注册一个xml命令空间   $xmlObj->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');  //寻找指定的Body元素$arr=$xmlObj->xpath("soap:Body");//再寻找其下级,下下级元素的值$arr[0]->GetDonorInfoResponse->GetDonorInfoResult[0];//转成数组print_r(json_decode($arr[0]->GetDonorInfoResponse->GetDonorInfoResult[0],true));

最终结果:

PHP解析SOAP生成的xml相关推荐

  1. java soap 解析,java 解析soap

    场景:运用java发送和解析soap请求xml 使用java发送和解析soap请求xml ReceSoap.java: package com.lmd.servlet; import java.io. ...

  2. JAXB根据带继承关系的类生成soap请求的XML报文(互转)

    文章目录 生成的请求报文与需要解析的响应报文 使用Apache CXF或者jdk自带的wsimport生成客户端代码 不生成客户端代码 类的继承关系 包结构与package-info.java 将子类 ...

  3. golang xml和json的解析与生成

    golang中解析xml时我们通常会创建与之对应的结构体,一层层嵌套,完成复杂的xml解析. package main;import ("encoding/xml""fm ...

  4. dom解析和生成XML文件

    使用这种方式解析时,需要使用node.getNodeType() == Node.ELEMENT_NODE判断结点是否为元素结点,否则会输出很多#text(结点前有空格存在的原因). 完成的XML解析 ...

  5. (五)DOM4j进行XML文件的解析及生成

    DOM4j本身还是需要使用SAX建立解析器,然后通过文档依次找到根节点,再通过根节点查找每一个节点的内容. 1.写操作 import java.io.File; import java.io.File ...

  6. Android学习笔记---15_采用Pull解析器解析和生成XML内容

    15_采用Pull解析器解析和生成XML内容 -------------------------------------- 使用SAX或者DOM或者pull解析XML文件 -------------- ...

  7. 对xsd文件的操作 生成java实体并解析生成的xml

    步骤如下: 1. 根据xsd生成相应的java类: 执行如下命令即可生成java类,xjc –d  java类的存放路径 –p 类的包名  xsd文件名 例如:D:\java\jdk1.6.0_31\ ...

  8. Java自定义生成与解析(Dom4J)XML文件

    XML(Extensible Markup Language):可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 应用:XML 应用于 web 开发的许多方面, ...

  9. 粤嵌学习打卡第19天(基于DOM方式解析、生成XML文档)

    今天我们来聊聊基于DOM方式实现解析和生成XML文档 一般web开发的xnl文档: 基于DOM处理XML文档 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIQAET ...

最新文章

  1. 朴素贝叶斯法(二)——基本方法
  2. 一个完整的schema验证xml的样例
  3. MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
  4. python学习高级篇(part1)--类属性
  5. How to monitor your mobile application network traffic in your own LAPTOP
  6. 今天学习Flex3.2嵌入图片,值得说道的是如何嵌入scale-9 缩放的图像
  7. c c++ sizeof
  8. (转)NYU教授给写AI新闻的记者们写了一封推心置腹的信,你也应该读读
  9. vue项目px自动转rem适用于pc端
  10. 测试自己移动速度的软件,鼠标灵敏度测试检测工具 测试鼠标的灵敏度与移动速度...
  11. Pwn level题目
  12. linux查看主板型号、CPU、显卡、硬盘等信息
  13. 使用Python程序读取fasta文件reads
  14. 5-2本题要求对两个整数a和b,输出其中较大的数。
  15. notion.so android,Notion APP官网
  16. 深圳梅林中学2021年高考成绩查询,2019深圳梅林中学中考录取分数线是多少
  17. android源码 谷歌拼音输入法已停止运行
  18. microscan说明书_MicroScan WA96微生物分析仪使用评价
  19. 电子屏幕的51c语言程序,单片机控制LCD液晶显示器(含程序)
  20. android没有捂脸表情,微信新emoji表情有哪些 新emoji表情安卓机怎么没有

热门文章

  1. 内存卡没有Android,安卓内存卡读不出来怎么办
  2. 用Python写了个工具,完美破解了MySQL!!(建议收藏)
  3. 游戏制作之路-unity捕鱼达人(一 开始以及加载界面的制作)
  4. 开环直流电机的机械特性_直流电机调速开环控制.docx
  5. 瑜伽断食法——From《瑜伽祖本》(手敲版)
  6. AD画PCB常规问题分析
  7. 大学物理实验长度的测量实验报告_大学物理实验长度测量法实验报告完整版
  8. PHP阅读文章送积分规则代码,php实现微信公众号文章付费阅读功能的代码分享
  9. backup archivelog all not backed up
  10. python 函数enumerate用法