Ecco un codice per scorrere gli attributi e costruire JSON. Se supporta, uno o più clienti.
Se siete XML assomiglia a questo (o un solo cliente)
<xml>
<customer editable="true" maxChars="9" valueType="numeric">69236</customer>
<customer editable="true" maxChars="9" valueType="numeric">12345</customer>
<customer editable="true" maxChars="9" valueType="numeric">67890</customer>
</xml>
Scorrere in questo modo.
try {
$xml = simplexml_load_file("customer.xml");
// Find the customer
$result = $xml->xpath('/xml/customer');
$bFirstElement = true;
echo "var customers = {\r\n";
while(list(, $node) = each($result)) {
if($bFirstElement) {
echo "'". $node."':{\r\n";
$bFirstElement = false;
} else {
echo ",\r\n'". $node."':{\r\n";
}
$bFirstAtt = true;
foreach($node->attributes() as $a => $b) {
if($bFirstAtt) {
echo "\t".$a.":'".$b."'";
$bFirstAtt = false;
} else {
echo ",\r\n\t".$a.":'".$b."'";
}
}
echo "}";
}
echo "\r\n};\r\n";
} catch(Exception $e) {
echo "Exception on line ".$e->getLine()." of file ".$e->getFile()." : ".$e->getMessage()."<br/>";
}
per produrre una struttura JSON come questo
var customers = {
'69236':{
editable:'true',
maxChars:'9',
valueType:'numeric'},
'12345':{
editable:'true',
maxChars:'9',
valueType:'numeric'},
'67890':{
editable:'true',
maxChars:'9',
valueType:'numeric'}
};
Infine, nello script, accedere all'attributo come questo
WScript.Echo(customers["12345"].editable);
Buona fortuna
fonte
2011-12-20 17:08:37
Questo non riesce se non v'è per esempio un blocco CDATA nell'elemento, in questo modo: –
Per me, la soluzione era chiamare esplicitamente '-> children()' durante il loop dell'oggetto xml. Se non l'avessi fatto, gli attributi erano spariti. –