我试图弄清楚如何在下面的代码中获取和打印特定的,但节点IDValue
的数量和顺序因每个而异,所以我不能总是通过使用获得正确的值:ProductIdentifier
Product
<?php print $productXML[0]->ProductIdentifier[2]->IDValue; ?>
有没有办法做类似的事情:“如果ProductIDType
是 03,那么打印IDValue
那个子节点”?
<Product>
<RecordReference>PublishingGroup</RecordReference>
<NotificationType>03</NotificationType>
<RecordSourceType>01</RecordSourceType>
<RecordSourceName>Publishing Group</RecordSourceName>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDTypeName>ID</IDTypeName>
<IDValue>28831</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>02</ProductIDType>
<IDValue>0163668869</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
<IDValue>9180763668860</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>15</ProductIDType>
<IDValue>9180763668860</IDValue>
</ProductIdentifier>
更新:
正如下面非常有用的评论所建议的那样,我尝试使用 xpath,但在尝试通过 php 打印时它只是返回了“Array”。我尝试了几种方法来修复它,并从 SO 和 W3C 文档和其他地方的其他问题中记录下来,但没有运气。
这就是我最终做的事情:
<?php
foreach($productXML[0]->ProductIdentifier as $value) {
if($value->ProductIDType=='03')
{
print ($value->IDValue);
}
}
?>
不是最优雅的解决方案,但它现在输出正确的值。