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 :-\ Quote 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. Quote 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] Quote 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' Quote 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); Quote 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 ]'); Quote Link to comment https://forums.phpfreaks.com/topic/258679-xml-parsing/#findComment-1326123 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.