我有一个XML($ fileXML),例如:
<FatturaElettronicaHeader>
<CedentePrestatore>
<DatiAnagrafici>
<Anagrafica>
<Denominazione>MY STORE SRL</Denominazione>
<Cognome>Rossi</Cognome>
</Anagrafica>
</DatiAnagrafici>
</CedentePrestatore>
</FatturaElettronicaHeader>
我使用此函数来检索一些值:
$xml = new DOMDocument();
$xml->loadXML($fileXML);
$xpath = new DOMXPath($xml);
$nodes = $xpath->query('//CedentePrestatore/DatiAnagrafici');
foreach ($nodes as $nodelist) {
$denominazione = $xpath->query( 'Anagrafica/Denominazione', $nodelist)->item(0)->nodeValue;
$cognome = $xpath->query( 'Anagrafica/Cognome', $nodelist)->item(0)->nodeValue;
}
效果很好。但是节点Cognome
在XML中是可选的,因此有时它不存在,例如:
<FatturaElettronicaHeader>
<CedentePrestatore>
<DatiAnagrafici>
<Anagrafica>
<Denominazione>MY SHOP2 SRL</Denominazione>
</Anagrafica>
</DatiAnagrafici>
</CedentePrestatore>
</FatturaElettronicaHeader>
然后我的脚本出现错误:Trying to get property of non-object
如果存在,如何修改代码以分配给变量$cognome
节点值,在其他情况下如何分配空字符串""
?
答案 0 :(得分:3)
确保xpath返回任何节点
$cognome = $xpath->query( 'Anagrafica/Cognome', $nodelist);
$cognome = $cognome->length ? $cognome->item(0)->nodeValue : '';