我使用PHP SOAP从Web服务获取一些数据。我使用__getLastResponse
从Soap客户端收到的数据似乎是围绕相关XML数据的SOAP信封,这很好,因为我正计划将其转换为SimpleXMLElement
以提取数据。 / p>
问题是数据看起来是正确的,直到它到达某个<records>
标记,之后它会用<
替换所有<
标记。
这是我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><records xmlns="http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord">
<REC r_id_disclaimer="ResearcherID data provided by Thomson Reuters"><UID>WOS:000257367300002</UID><static_data><summary><EWUID><WUID coll_id="WOS"></WUID><edition value="WOS.SCI"></edition></EWUID><pub_info issue="8" pubtype="Journal" sortdate="2008-07-01" has_abstract="Y" coverdate="JUL 2008" pubmonth="JUL" vol="17" pubyear="2008"><page end="1820" page_count="16" begin="1805">1805-1820</page></pub_info><titles count="6"><title type="source">BIODIVERSITY AND CONSERVATION</title>...etc...</static_data><dynamic_data><citation_related><tc_list><silo_tc local_count="16" coll_id="WOS"></silo_tc></tc_list></citation_related><cluster_related><identifiers><identifier value="0960-3115" type="issn"></identifier><identifier value="10.1007/s10531-007-9267-2" type="doi"></identifier><identifier value="10.1007/s10531-007-9267-2" type="xref_doi"></identifier></identifiers></cluster_related></dynamic_data></REC>
</records></records></return></ns2:searchResponse></soap:Body></soap:Envelope>
为什么开始标记在到达第二个<records>
标记之前是否正确显示?之后,它会用<
替换它们,直到它到达结束</records>
标记,然后它会正确显示开始标记。它不会影响结束标记或奇怪的引号。
这与CDATA
有关吗?这是我能想到的尽管它并没有说明CDATA
有一块{...}} ...
感谢。
答案 0 :(得分:0)
我遇到了同样的问题,不知道这是否是“好的”解决方案,但至少它能起作用:
Pry.start
这是将html实体解码回html。正确存在于字符串中的<和>保持相同。
希望这对任何人都有帮助