我有一个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
节点值,如果存在,空字符串""
在其他情况下分配?
检查XPath返回任何节点
$cognome = $xpath->query( 'Anagrafica/Cognome', $nodelist);
$cognome = $cognome->length ? $cognome->item(0)->nodeValue : '';