2012-10-04 59 views
0

如何我读出了PROP的 我可以读取PVAL的使用下面的脚本..PHP的XML获取“名称”值

<?xml version='1.0'?> 
<RECORDS> 
<RECORD> 
<PROP NAME="Product"> 
    <PVAL><![CDATA[Produkt1]]></PVAL> 
</PROP> 
<PROP NAME="Value"> 
    <PVAL><![CDATA[10]]></PVAL> 
</PROP> 
<PROP NAME="Status"> 
    <PVAL><![CDATA[Active]]></PVAL> 
</PROP> 
</RECORD> 
<RECORD> 
<PROP NAME="Product"> 
    <PVAL><![CDATA[Produkt2]]></PVAL> 
</PROP> 
<PROP NAME="Value"> 
    <PVAL><![CDATA[20]]></PVAL> 
</PROP> 
<PROP NAME="Status"> 
    <PVAL><![CDATA[Active]]></PVAL> 
</PROP> 
</RECORD> 
<RECORD> 
<PROP NAME="Product"> 
    <PVAL><![CDATA[Produkt3]]></PVAL> 
</PROP> 
<PROP NAME="Value"> 
    <PVAL><![CDATA[30]]></PVAL> 
</PROP> 
<PROP NAME="Status"> 
    <PVAL><![CDATA[Active]]></PVAL> 
</PROP> 
</RECORD> 

“名称”值,使用下面的脚本,我可以得到PVAL的。 但我想获得名称值,我试过 $ strvalue = $ node-> PROP [6] - > NAME;没有运气...

<?php 
$z = new XMLReader; 
$z->open('products.xml'); 

$doc = new DOMDocument; 

// move to the first <product /> node 
while ($z->read() && $z->name !== 'RECORD'); 

// now that we're at the right depth, hop to the next <product/> until the end of the tree 
while ($z->name === 'RECORD') 
{ 

$node = simplexml_import_dom($doc->importNode($z->expand(), true)); 


$strvalue = $node->PROP[6]->PVAL; 
echo $strvalue."<p>" ; 

// go to next <product /> 
$z->next('RECORD'); 
} 
?> 

回答

1

这里有一个建议:使用SimpleXMLElement($xml_string)这需要一个XML字符串作为输入,并返回一个PHP对象,你可以更轻松地工作。然后,你可以做的得心应手的东西,如:

$php_object = SimpleXMLElement($xml_string); 
var_dump($php_object); 
exit; 

,这将让你看看你的对象的结构,并决定如何最好地访问它。祝你好运。

+0

感谢:-) 但我仍然不确定如何读出“名称”值(我不是很有经验的XML)。 类似于$ strValue = $ php_object->名称 –

+0

明白了$ node-> PROP [0] - > attributes() –