Considera il seguente codice:
$dom = new DOMDocument(); $dom->loadXML($file); $xmlPath = new DOMXPath($dom); $arrNodes = $xmlPath->query('*/item'); foreach($arrNodes as $item){ //missing code }
Il file $ è un xml e each elemento ha un titolo e una descrizione. Come posso visualizzarli (titolo e descrizione)?
$file = "<item> <title>test_title</title> <desc>test</desc> </item>";
Se il tuo articolo appare così:
<item> <title>foo</title> <description>frob</description> </item>
È ansible utilizzare getElementsByTagName()
e nodeValue
:
foreach($arrNodes as $item){ print $item->getElementsByTagName('title')->item(0)->nodeValue; }
Gli attributi del title
e della description
? Per esempio. un object assomiglia a questo:
<item title="foo" description="frob" />
Se è così, puoi semplicemente usare getAttribute()
:
... foreach($arrNodes as $item){ print $item->getAttribute('title'); }
Suggerisco di usare il simplexml
di php, con questo, si ottiene comunque la funzionalità xpath
, ma con un approccio più semplice, ad esempio si accederebbe ad attributi come questo:
$name = $item['name'];
Ecco un esempio:
Xmlfile.xml:
<?xml version="1.0" encoding="UTF-8"?> <xml> <items> <item title="Hello World" description="Hellowing the world.." /> <item title="Hello People" description="greeting people.." /> </items> </xml>
do.php:
<?php $xml_str = file_get_contents('xmlfile.xml'); $xml = new SimpleXMLElement($xml_str); $items = $xml->xpath('*/item'); foreach($items as $item) { echo $item['title'], ': ', $item['description'], "\n"; }
L'espressione XPath corretta dovrebbe essere:
/*/item/title | /*/item/desc
O
/*/item/*[self::title or self::desc]
Questo è valutato su un nodo impostato con title
e elemento desc
nell'ordine del documento