Dưới đây là một số mã để lặp qua các thuộc tính và xây dựng JSON. Nếu hỗ trợ, một hoặc nhiều khách hàng.
Nếu bạn XML trông như thế này (hoặc chỉ là một khách hàng)
<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>
Duyệt qua nó như thế này.
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/>";
}
Để tạo ra một cấu trúc JSON như thế này
var customers = {
'69236':{
editable:'true',
maxChars:'9',
valueType:'numeric'},
'12345':{
editable:'true',
maxChars:'9',
valueType:'numeric'},
'67890':{
editable:'true',
maxChars:'9',
valueType:'numeric'}
};
Cuối cùng, trong kịch bản của bạn, truy cập vào thuộc tính như
WScript.Echo(customers["12345"].editable);
Chúc may mắn này
Nguồn
2011-12-20 17:08:37
này thất bại nếu có ví dụ một khối CDATA trong phần tử, như vậy: –
Đối với tôi, giải pháp được gọi một cách rõ ràng là '-> children()' khi lặp lại đối tượng xml. Nếu không, các thuộc tính đã biến mất. –