Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чтение случайного элемента из xml-файла (https://javascript.ru/forum/misc/45174-chtenie-sluchajjnogo-ehlementa-iz-xml-fajjla.html)

andrei0077 17.02.2014 21:55

Чтение случайного элемента из xml-файла
 
Добрый вечер! Вот код, который выполняет отображение случайного элемента из xml-строки
function findCity() {
            
            var doc =
            '<Cities>' +
            '<City Name="London" url="LinkToImage" />' +
            '<City Name="Aberdeen" url="LinkToImage" />' +
            '<City Name="Birmingham" url="LinkToImage" />' +
            '<City Name="Bristol" url="LinkToImage" />' +
            '<City Name="Cardiff" url="LinkToImage" />' +
            '<City Name="Edinburgh" url="LinkToImage" />' +
            '<City Name="Glasgow" url="LinkToImage" />' +
            '<City Name="Liverpool" url="LinkToImage" />' +
            '<City Name="Manchester" url="LinkToImage" />' +
            '<City Name="Newcastle" url="LinkToImage" />' +
            '<City Name="Paris" url="LinkToImage" />' +
            '<City Name="Marseille" url="LinkToImage" />' +
            '</Cities>';
            
            var parser = new DOMParser();
            var xml = parser.parseFromString(doc, "text/xml");
            var cities = xml.getElementsByTagName("Cities")[0].childNodes; 
            var randomCity = Math.floor(Math.random() * cities.length); 
            var city = cities[randomCity]; 
            alert(city.getAttribute("Name"));
        }


У меня 2 вопроса. Как сделать так, чтобы:
1) xml брался не из строки, а из файла?
2) результат выводился не в окно, а в строку на экране?

Заранее спасибо!

danik.js 17.02.2014 22:09

Цитата:

Сообщение от andrei0077
xml брался не из строки, а из файла?

XMLHttpRequest. Этот объект сам распарсит xml (на что название объекта какбэ намекает), и положит в свойство responseXML
Цитата:

Сообщение от andrei0077
результат выводился не в окно, а в строку на экране?

Самый примитив: document.write('abc' + '<br>'). Но оно будет стирать текущий контент.
Или так:
var div = document.createElement('div');
div.innerHTML = 'bla bla';
document.body.appendChild(div);

или insertAdjacementHTML. Или ставишь стиль whitespace:pre и тогда можешь аппендить текст с '\n' переносами строк. Короче вариантов уйма, еще смотря че хочешь в итоге получить.

Кстати, следи за трендом - нынче XML не модно юзать. Ща JSON актуален.


Часовой пояс GMT +3, время: 12:09.