Läsa in delar av ett XML-dokument

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1

Jag skulle behöva ett phpscript för att läsa in t.ex. endast alla med Årtal: 2005 osv. från XML-dokumentet och visa detta.
Är det någon som kan leda mig in på detta?

<items>
	<product>
		<title>Aa</title>
		<description>txt txt txt txt</description>
		<year>År: 2005</year>
	</product>
	<product>
		<title>Bb</title>
		<description>txt txt txt txt</description>
		<year>År: 2005</year>
	</product>
	<product>
		<title>Cc</title>
		<description>txt txt txt txt</description>
		<year>År: 2004</year>
	</product>
	<product>
		<title>Dd</title>
		<description>txt txt txt txt</description>
		<year>År: 2003</year>
	</product>
</items>

Så här läser in hela dokumentet:

function get_xml_catalog() {
	return new SimpleXMLElement(file_get_contents(STORE_XML_FILE)); 
}

Ett sätt är att göra om SimpleXML-objektet till en array och sedan använda t ex array_filter() och en egen funktion för att filtrera fram det du vill ha.

Skjutet från höften blir det något sånt här:

function filter_xml($xml) {
	return ($xml['year'] == 2005);
}

$filtered = array_filter( (array) get_xml_catalog(), 'filter_xml' );

Ett annat sätt är att använda Xpath.

$filtered = get_xml_catalog()->xpath('/items/product[year="År: 2005"]');

Som sagt, det är skjutet från höften. Det kan krävas lite pill för att det ska funka.

Ursprungligen av irrelogical:

Som sagt, det är skjutet från höften. Det kan krävas lite pill för att det ska funka.

Tack irrelogical!

1
Bevaka tråden