Hi people,
I am building my own component for my app needs and i am wondering if
my idea is right.My app consist of web services where the data may be
in XML or JSON format.So, i started creating a Component to parse
Xml,Json returned data using XPath (for Xml) and JPath (for Json).My
philosophy is that there is an astract class ResponseParser for
general types of returned data and then 2 sub-classes extends the
astract class using inheritance.These classes are XmlParser and
JsonParser.If the data is in Xml format a new object of XmlParser
class is created and so on.now i am wondering if my approach is
good.Here is my code:
<?php
class ResponseParser {
function modelParse($text,$modelName,$mappings = array(),
$responseType) {
}
}
//Using X-Path to implement XML parsing
class XmlParser extends ResponseParser {
var modelFields = array(array());
function xmlParse($response,$model,$mappings = array()){
$xml = new SimpleXMLElement($response);
for ($j = 0; $j < sizeof($xml->xpath('/geonames/'.$model.'');
$j +=
1) { // Loop to access all children
for ($i = 0; $i < sizeof($mappings); $i += 1) {
// Loop to
map each child
$modelField[$j][$i] =
$xml->xpath(''.$mappings[0]['Composition']
[$i]['map'].'');
}
}
return($modelField);
}
}
//Using J-Path to implement JSON parsing
class JsonParser extends ResponseParser{
var modelFields = array(array());
function jsonParse($response,$model,$mappings = array()){
var jp = new JPath($response);
for ($j = 0; $j < sizeof(jp.$('/geonames/'.$model.'').json); $j
+=
1) { // Loop to access all children
for ($i = 0; $i < sizeof($mappings); $i += 1) {
// Loop to
map each child
$modelField[$j][$i] =
jp.$(''.$mappings[0]['Composition'][$i]
['map'].'').json;
}
}
return($modelField);
}
}
class ServiceCompositionEngineComponent extends Object {
function startup(&$controller) {
$this->controller =& $controller;
}
function getRespType($responseType,$text,$model,$mappings = array()){
if ($responseType == 'XML'){
var xmlpsr = new xmlParse($text,$model,$mappings =
array())
} else if($responseType == 'JSON'){
var jsonpsr = new jsonParse($text,$model,$mappings =
array())
}
}
}
?>
Any help would be nice!!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---