This is a discussion on simplexml - get correct nodes - PHP ; My xml file looks like this: Code: <data> <time-layout time-coordinate="local" summarization="12hourly"> <start-valid-time period-name="Tonight">data</start-valid-time> <start-valid-time period-name="Thursday">data</start-valid-time> <start-valid-time period-name="Thursday Night">data</start-valid-time> <start-valid-time period-name="Friday">data</start-valid-time> <start-valid-time period-name="Friday Night">data</start-valid-time> <start-valid-time period-name="Saturday">data</start-valid-time> <start-valid-time period-name="Saturday Night">data</start-valid-time> <start-valid-time period-name="Sunday">data</start-valid-time> <start-valid-time period-name="Sunday Night">data</start-valid-time> <start-valid-time period-name="Monday">data</start-valid-time> <start-valid-time period-name="Monday Night">data</start-valid-time> <start-valid-time period-name="Tuesday">data</start-valid-time> ...
My xml file looks like this:
I need to access the "period-name" attribute of the "start-valid-time" nodes of the 2nd and 3rd "time-layout" nodes. I know to use xpath because the node names have hyphens, but I do not understand how to get the correct attributes from the correct nodes. Here is what I started with:Code:<data> <time-layout time-coordinate="local" summarization="12hourly"> <start-valid-time period-name="Tonight">data</start-valid-time> <start-valid-time period-name="Thursday">data</start-valid-time> <start-valid-time period-name="Thursday Night">data</start-valid-time> <start-valid-time period-name="Friday">data</start-valid-time> <start-valid-time period-name="Friday Night">data</start-valid-time> <start-valid-time period-name="Saturday">data</start-valid-time> <start-valid-time period-name="Saturday Night">data</start-valid-time> <start-valid-time period-name="Sunday">data</start-valid-time> <start-valid-time period-name="Sunday Night">data</start-valid-time> <start-valid-time period-name="Monday">data</start-valid-time> <start-valid-time period-name="Monday Night">data</start-valid-time> <start-valid-time period-name="Tuesday">data</start-valid-time> <start-valid-time period-name="Tuesday Night">data</start-valid-time> <start-valid-time period-name="Wednesday">data</start-valid-time> </time-layout> <time-layout time-coordinate="local" summarization="12hourly"> <start-valid-time period-name="Tonight">some data</start-valid-time> <start-valid-time period-name="Thursday Night">data</start-valid-time> <start-valid-time period-name="Friday Night">data</start-valid-time> <start-valid-time period-name="Saturday Night">data</start-valid-time> <start-valid-time period-name="Sunday Night">data</start-valid-time> <start-valid-time period-name="Monday Night">data</start-valid-time> <start-valid-time period-name="Tuesday Night">data</start-valid-time> </time-layout> <time-layout time-coordinate="local" summarization="12hourly"> <start-valid-time period-name="Thursday">data</start-valid-time> <start-valid-time period-name="Friday">data</start-valid-time> <start-valid-time period-name="Saturday">data</start-valid-time> <start-valid-time period-name="Sunday">data</start-valid-time> <start-valid-time period-name="Monday">data</start-valid-time> <start-valid-time period-name="Tuesday">data</start-valid-time> <start-valid-time period-name="Wednesday">data</start-valid-time> </time-layout> </data>
Can someone help me figure out how to access the correct nodes?Code:$xml = simplexml_load_file($xmlFile) or die ("Unable to load XML file!"); $simplexml= new SimpleXMLElement($xml); $timeLayout = $simplexml->xpath('/dwml/data/time-layout'); $timeLayout71 = $timeLayout[1]; $timeLayout72 = $timeLayout[2]; // from here down I start having problems $startValidTime = $timeLayout71->start-valid-time; // can't do this b/c of // hyphens - how else can I do this?? echo $startValidTime[0]['period-name'];
Thanks for your help!