[英]PHP parsing empty nodes from XML
PHP新手在这里。 我编写了一个脚本,用于分析从API提取的XML报告。 在某些报告中,某些节点不存在,因此当我尝试从该节点获取值时,出现错误“注意:试图获取非对象的属性”。 我不确定如何处理此问题,因为我有如下几百行代码,它们将节点值分配给关联数组。
$reportItems['propertyBaths'] = $report187->PropertyProfile->PropertyCharacteristics->Baths[0];
$reportItems['propertyRooms'] = $report187->PropertyProfile->PropertyCharacteristics->TotalRooms[0];
$reportItems['propertyYear'] = $report187->PropertyProfile->PropertyCharacteristics->YearBuilt[0];
在不存在节点的情况下,我想分配一个空字符串。 我想知道是否有一种简单的方法来执行此操作,而不必彻底改变我已经编写的内容,例如:
$reportItems['propertyBaths'] = $report187->PropertyProfile->PropertyCharacteristics->Baths[0] || ""
如果我预料到了这个问题,我会将每个赋值都包装在具有错误处理功能的函数中,但是我想知道是否有一种简单的方法可以解决我已有的问题。
我将使用isset()
来确保该节点存在:
if(isset($node->SomeValue)) {
$arr['item'] = $node->SomeValue;
} else {
$arr['item'] = ''
}
另外,正如Dave在以下评论中指出的那样,您还可以使用property_exists()
:
if (property_exists($node, 'someValue')) {
$arr['item'] = $node->SomeValue;
} else {
$arr['item'] = '';
}
你可以做类似的事情
$reportItems['propertyBaths'] = ''.$report187->PropertyProfile->PropertyCharacteristics->Baths[0];
这将自动将xml子级的结果转换为字符串,如果不存在则返回空字符串。 无需测试即可满足您的需求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.