Parse XML value based on attribute




<ITEMS>
<ITEM ItemID="XY">
<ItemSearchName />
<ITEMDESCRIPTION>
<DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="1" language="English">English description</DESCRIPTION>
<DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="2" language="France">Fance description</DESCRIPTION>
</ITEMDESCRIPTION>
<ItemType>B</ItemType>
<ItemDepartment />
<ITEMDIMENSIONS>
<ItemDimensionUOM>m</ItemDimensionUOM>
</ITEMDIMENSIONS>
<ItemGrossWeihgt>0.00</ItemGrossWeihgt>
</ITEM>
</ITEMS>


This is an example of my XML file parsed with simplexml method. I do read ItemID attribute value with this code (just an example):



$item->attributes()->ItemID


My question is, how to access DESCRIPTION under DESCRIPTION attribute languageId = 1?


I can do this with foreach:



foreach ($item->ITEMDESCRIPTION->DESCRIPTION as $desc) {
if ($desc['languageId'] == '1') {
echo "<td>" . $desc . "</td>";
}
}


but I would prefer not to use foreach.


Another possibility is this:



$desc2 = $item->ITEMDESCRIPTION->DESCRIPTION[1];


but this is just the first DESCRIPTION and not the description with attribute languageId = 1.


Thanks for any suggestions!


No comments:

Post a Comment