一些'' PHP SOAP响应中的标记显示为HTML'<'实体

时间:2014-08-21 14:58:47

标签: php xml web-services soap soap-client

我使用PHP SOAP从Web服务获取一些数据。我使用__getLastResponse从Soap客户端收到的数据似乎是围绕相关XML数据的SOAP信封,这很好,因为我正计划将其转换为SimpleXMLElement以提取数据。 / p>

问题是数据看起来是正确的,直到它到达某个<records>标记,之后它会用<替换所有&lt;标记。

这是我print_r时的数据(这只是完整数据的一个小例子):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:searchResponse xmlns:ns2="http://woksearch.v3.wokmws.thomsonreuters.com"><return><queryId>1</queryId><recordsFound>16492</recordsFound><recordsSearched>38802522</recordsSearched><records>&lt;records xmlns="http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord">
&lt;REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters">&lt;UID>WOS:000257367300002&lt;/UID>&lt;static_data>&lt;summary>&lt;EWUID>&lt;WUID coll_id="WOS">&lt;/WUID>&lt;edition value="WOS.SCI">&lt;/edition>&lt;/EWUID>&lt;pub_info issue="8" pubtype="Journal" sortdate="2008-07-01" has_abstract="Y" coverdate="JUL 2008" pubmonth="JUL" vol="17" pubyear="2008">&lt;page end="1820" page_count="16" begin="1805">1805-1820&lt;/page>&lt;/pub_info>&lt;titles count="6"&gt;&lt;title type="source">BIODIVERSITY AND CONSERVATION&lt;/title>...etc...&lt;/static_data>&lt;dynamic_data>&lt;citation_related>&lt;tc_list>&lt;silo_tc local_count="16" coll_id="WOS">&lt;/silo_tc>&lt;/tc_list>&lt;/citation_related>&lt;cluster_related>&lt;identifiers>&lt;identifier value="0960-3115" type="issn">&lt;/identifier>&lt;identifier value="10.1007/s10531-007-9267-2" type="doi">&lt;/identifier>&lt;identifier value="10.1007/s10531-007-9267-2" type="xref_doi">&lt;/identifier>&lt;/identifiers>&lt;/cluster_related>&lt;/dynamic_data>&lt;/REC>
&lt;/records></records></return></ns2:searchResponse></soap:Body></soap:Envelope>

为什么开始标记在到达第二个<records>标记之前是否正确显示?之后,它会用&lt;替换它们,直到它到达结束</records>标记,然后它会正确显示开始标记。它不会影响结束标记或奇怪的引号。

这与CDATA有关吗?这是我能想到的尽管它并没有说明CDATA有一块{...}} ...

感谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,不知道这是否是“好的”解决方案,但至少它能起作用:

Pry.start

这是将html实体解码回html。正确存在于字符串中的<和>保持相同。

希望这对任何人都有帮助