У меня проблемы с получением решения Бьёрна для работы в классе. У меня есть XML
<?xml version="1.0" encoding="utf-8"?>
<countries>
<country>
<name>Argentina</name>
<id>1</id>
</country>
<country>
<name>Australia</name>
<id>2</id>
<climate>Hot</climate>
</country>
<country >
<name>France</name>
<id>3</id>
</country>
</countries>
и JS
var requestXML = new Class({
initialize: function(){
var req = new Request({
method: 'post',
autoCancel: true,
url: 'data.xml',
onSuccess: function(text, xml){
xml.getElements('country').each(function(country) {
alert(item.getElement('country').get('text'));
});
}.bind(this)
}).send();
},
});
window.addEvent('domready', function() {
var request = new requestXML();
});
Но скрипт не выполняет getElement для объекта xml - Chrome жалуется на «Uncaught TypeError: Object # не имеет метода« getElement »».
Я получил эту другую версию, работающую в Chrome (прочитав о таинственных методах Slick в этом посте )
var requestXML = new Class({
initialize: function(){
var req = new Request({
method: 'post',
autoCancel: true,
url: 'data.xml',
onRequest: function(){
//
}.bind(this),
onSuccess: function(text, xml){
this.parseXML(xml);
}.bind(this),
onFailure: function(transport){
alert('XML loading error');
}
}).send();
},
parseXML: function(xml){
var firstCountry = Slick.find(xml, 'country name');
// Finds first matching element
// Returns <name>Argentina</name>
var countries = Slick.search(xml, 'country');
// Finds all matching elements
// Returns [<country>...</country>, <country>...</country>, ... ]
var output = '';
countries.each(function(item, index){
var id = item.getElement('id').get('text');
var name = item.getElement('name').get('text');
var climate = item.getElement('climate');
if (climate){
climate = climate.get('text');
} else {
climate = '';
}
output += id + ' ' + name + ' ' + climate + '<br>';
});
$('container').set('html', output);
}
});
window.addEvent('domready', function() {
var request = new requestXML();
});
Но в IE он ломается, где в строке указано: «Объект не поддерживает это свойство или метод» var id = item.getElement('id').get('text');
. Это похоже на проблему с getElement () в стилевом решении Бьёрна.
Кто-нибудь может нам посоветовать? Документация для Mootools кажется плохой по сравнению с JQuery, и я не могу найти много полезной информации о том, как анализировать XML.
Приветствие
И наконец