我有一个XML文件列表作为SOAP信封,我需要从中提取信息,但每当遇到具有字符$的值时,php认为它是变量并且给出错误。
请参阅此example.php文件中的Item标记:
<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ChangeRequestPrintService="http://bt2ws.central.sun.com:8088/services/schemas/cr-print">
<SOAP-ENV:Header/><SOAP-ENV:Body>
<ChangeRequestPrintService:PrintChangeRequest>
<ChangeRequest>
<Id>1-CKWF3T</Id>
<Priority>1-Very High</Priority>
<Type>Defect</Type>
<Number>7077438</Number>
<SubmittedDate>2011-08-10 19:28:01 GMT+00:00</SubmittedDate>
<Status>3-Accepted</Status>
<CrNumber>7077438</CrNumber>
<Area>Defect</Area>
<Item> Testng text $c </Item>
</ChangeRequest>
</ChangeRequestPrintService:PrintChangeRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML;
?>
在我的主要PHP文件中,我正在执行的文件,我有:
$bugXML=new SimpleXMLElement($xmlstr);
我收到的错误信息是:
Notice: Undefined variable: c in /path_to_file on line 20.
有什么方法可以让PHP忽略它吗? 我无法更改SOAP信封的内容。
提前致谢。
斯蒂娜
答案 0 :(得分:1)
您可以执行以下操作之一:
逃避美元符号:Testng text \$c
使用Nowdoc syntax完全禁用变量插值。这仅适用于PHP 5.3+。 $xmlstr = <<<'XML'
(注意撇号)。
将XML存储在外部文件(而不是PHP字符串文字)中,然后需要load it。