Sakunne Posted March 11, 2012 Share Posted March 11, 2012 I need to parse XML and this article helped me a lot: http://www.phpfreaks.com/tutorial/handling-xml-data The next thing I need is to parse only elements that meet certain conditions, lets say we have an XML with structure like this: <Result> <Line> <StockCode>0101009</StockCode> <Description>Description</Description> <ProductGroup>S01</ProductGroup> <Availability>0</Availability> </Line> ... </Result> I need to parse only the elements with ProductGroup = S01 and Availability = 1 How can I do that :-\ Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/ Share on other sites More sharing options...
cpd Posted March 11, 2012 Share Posted March 11, 2012 Just parse the whole thing and directly access those tags. $xmlString = <<<XML <Result> <Line> <StockCode>0101009</StockCode> <Description>Description</Description> <ProductGroup>S01</ProductGroup> <Availability>0</Availability> </Line> </Result> XML; $xmlObj = new SimpleXMLElement($xmlString); var_dump($xmlObj); // Will show you the structure of the object. Can't remember how it structures it. Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326095 Share on other sites More sharing options...
Mahngiel Posted March 11, 2012 Share Posted March 11, 2012 to expand on what CPD said, You will need to run a foreach with conditionals to meet your criteria. $lines =& $xmlObj->line; foreach( $lines as $line ): { if( $line->ProductGroup == 'S01' && $line Availability != '0' ) { echo 'meets condition'; } } [/code] Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326101 Share on other sites More sharing options...
Sakunne Posted March 11, 2012 Author Share Posted March 11, 2012 Thanks! Can I do the same thing with 'SimpleXML' and 'xpath' Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326105 Share on other sites More sharing options...
Mahngiel Posted March 11, 2012 Share Posted March 11, 2012 Thanks! Can I do the same thing with 'SimpleXML' and 'xpath' Just as CPD showed you $SOURCE = http://path.to.xml; // remote file $SOURCE = "xml string you wish to iterate through"; // local string $xmlObj = new SimpleXMLElement($SOURCE); Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326115 Share on other sites More sharing options...
Sakunne Posted March 11, 2012 Author Share Posted March 11, 2012 Actually, I made it like this: $xml = new SimpleXMLElement('full_availability.xml', null, true); $Result = $xml->xpath('//Line[ExtProdGroup="0204" and Availability != 0 ]'); Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326123 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.