好的,这就是我必须使用的XML ..
<ALL_STOCK>
<SINGLE_ITEM>
<SKU>1234</SKU>
<USER_DEFINED NAME="Brand" TYPE="LIST" />
<USER_DEFINED NAME="Theme" TYPE="LIST" />
<USER_DEFINED NAME="Colour" TYPE="LIST" />Black</USER_DEFINED>
</SINGLE_ITEM>
<SINGLE_ITEM>
<SKU>5678</SKU>
<USER_DEFINED NAME="Brand" TYPE="LIST" />
<USER_DEFINED NAME="Theme" TYPE="LIST" />
<USER_DEFINED NAME="Colour" TYPE="LIST" />Red</USER_DEFINED>
</SINGLE_ITEM>
</ALL_STOCK>
这是我的PHP代码简化..
$extractedxml = simplexml_load_string($result);
foreach ($extractedxml as $eachproduct):
echo $eachproduct->SKU;
echo $eachproduct->USER_DEFINED['Colour'];
endforeach;
我试图回应SKU&amp;每种产品的颜色。我可以轻松访问SKU,上面的代码适用于此。如何根据对象&#39; NAME&#39;来访问对象?参数? 如果我只是使用
echo $eachproduct->USER_DEFINED;
我从第一个USER_DEFINED
条目中返回值Brand
我不想通过索引号访问它,因为这些可能会在循环中发生变化?非常感谢提前!
更多信息:
以下是单个产品的输出&#39; var_dump($each_product);
object(SimpleXMLElement)[56]
public '@attributes' =>
array (size=2)
'NAME' => string 'Brand' (length=5)
'TYPE' => string 'TEXT' (length=4)
object(SimpleXMLElement)[58]
public '@attributes' =>
array (size=2)
'NAME' => string 'Theme' (length=5)
'TYPE' => string 'LIST' (length=4)
object(SimpleXMLElement)[59]
public '@attributes' =>
array (size=2)
'NAME' => string 'Colour' (length=6)
'TYPE' => string 'LIST' (length=4)
string '"Black"' (length=5)
答案 0 :(得分:1)
像这样使用xpath:
foreach ( $extractedxml as $eachproduct ) {
$colour = $eachproduct->xpath('USER_DEFINED[@NAME="Colour"]')[0];
// returns actual value of SimpleXMLElement Object
echo (string) $colour;
}
同时从XML中删除错误:
<USER_DEFINED NAME="Colour" TYPE="LIST" >Black</USER_DEFINED>