PHP XML。如何检查标签的值是否为0

时间:2014-03-12 09:43:25

标签: php xml

我收到以下xml文件:

<FEEDBACKLIST>
<SUMMARY>
<MODE>service</MODE>
<VENDORLOGON/>
<VENDORREF/>
<TOTALSERVICECOUNT>0</TOTALSERVICECOUNT>
<TOTALPRODUCTCOUNT>0</TOTALPRODUCTCOUNT>
<COUNT>0</COUNT>
<TITLE/>
<BEST>100</BEST>
<WORST>0</WORST>
<AVERAGE>??</AVERAGE>
<START>1</START>
<LIMIT>20</LIMIT>
</SUMMARY>
</FEEDBACKLIST>

我可以检查COUNT是否为0,如果是,我想用不同的参数重新发送xml请求。

我收到了这样的话:

$curdir = getcwd();




$logon = array_key_exists('logon', $_GET) ? $_GET['logon'] : null;
$limit = array_key_exists('limit', $_GET) ? $_GET['limit'] : null;
$mode = array_key_exists('mode', $_GET) ? $_GET['mode'] : null;
$vendorref = array_key_exists('vendorref', $_GET) ? $_GET['vendorref'] : null;
$suppressnegatives = array_key_exists('suppressnegatives', $_GET) ? $_GET['suppressnegatives'] : null;

$xml_filename = "http://www.x.com/filename/xmlfeed.jsp?logon=".$logon;
if ($limit)
    $xml_filename .= "&limit=".$limit;
if ($vendorref)
  $xml_filename.="&vendorref=".$vendorref; 
if ($mode)
  $xml_filename.="&mode=".$mode; 
if ($suppressnegatives)
  $xml_filename.="&negativesanswered=true";



if (phpversion() < "5"){
    $xmldoc = domxml_open_file( $xml_filename);
    $xsldoc = domxml_xslt_stylesheet_file ( $curdir."/feedback.xsl");
    $result = $xsldoc->process($xmldoc);
    echo $result->dump_mem();
}
else
    $doc = new DOMDocument();
    $xsl = new XSLTProcessor();
    $doc->load($curdir."/feedback.xsl");    
    $xsl->importStyleSheet($doc);
    $doc->load($xml_filename);
    echo $xsl->transformToXML($doc);

我认为我需要检查之前用getElementsbyTagName回复$ xsl但不确定如何使用它。

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

如果您需要保持PHP 4支持,请浏览DOM。如果你可以删除它并仅支持PHP 5,请使用DOMXpath :: evaluate()。

$xml = '<FEEDBACKLIST><SUMMARY><COUNT>0</COUNT></SUMMARY></FEEDBACKLIST>';

$dom = new DOMDOcument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);

var_dump($xpath->evaluate('string(/FEEDBACKLIST/SUMMARY/COUNT)'));

输出:

string(1) "0"