Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Распарсить xml, зная структуру (https://javascript.ru/forum/events/40551-rasparsit-xml-znaya-strukturu.html)

alex55 10.08.2013 14:42

Распарсить xml, зная структуру
 
В переменной text например у меня есть xml
мне нужно добраться до определенных элементов. я структуру знаю.
на пхп я делаю примерно так main->city->name итд.
а можно ли на яваскрипт сразу перейти к нужному элементу без for и while?
чтобы например так var name = main->city->name

danik.js 10.08.2013 15:28

doc.querySelector('main > city > name')
Или через XPath

alex55 10.08.2013 15:46

var a = xmlhttp.responseText;
         var b = a.querySelector("main->city->name"); 
         alert(b);


пишет "содержимое переменной а".has not method querySelector...

Deff 10.08.2013 15:52

alex55,
Нун создать документ и определить его содержимое

alex55 10.08.2013 15:53

а как

danik.js 10.08.2013 15:56

Если contentType правильный, то документ уже сформирован и находится в xmlhttp.responseXML

И посмотри на селектор. Я писал не так, как у тебя.

alex55 10.08.2013 16:58

проблема видимо в том что у меня не responseXML а responseText
т.к. у меня xml запрашивается через ajax.. кка тогда быть?

Deff 10.08.2013 17:08

alex55,
Ну а пробовать создать
var xml = document.createElement('div');
xml.innerHTML = xmlhttp.responseText;

И парсить xml.querySelector("main >city >name");

danik.js 10.08.2013 17:19

Цитата:

Сообщение от alex55
проблема видимо в том что у меня не responseXML а responseText

Ну исправь responseText на responseXML
Цитата:

Сообщение от alex55
т.к. у меня xml запрашивается через ajax.. кка тогда быть?

Гы, а как можно использовать объект XMLHttpRequest без ajax? Как ты это себе представляешь?

alex55 10.08.2013 17:34

я решил проблему так:
xmlhttp.overrideMimeType('text/xml'); перед отсылкой запроса

alex55 10.08.2013 17:38

var a = xmlhttp.responseXML.querySelector("response->certinfo->attestat->notary");
         
         alert(a);

пишет null
xml такой
<?xml version="1.0" encoding="windows-1251"?>
<response retval="2">
<fullaccess></fullaccess>
<certinfo wmid="123456789">
<attestat>
<row tid="" recalled="" datecrt="123" regnickname="456" regwmid="789" status="100" notary="55"/>
...

alex55 10.08.2013 17:51

del

danik.js 10.08.2013 18:00

alex55, ну ты чукча. Я тебе второй раз говорю - у тебя селектор неправильный. Посмотри че мы тебе пишем, и че ты пишешь и сравни.

alex55 10.08.2013 18:14

див у меня уже создан. я не хочу вставлять целый xml в див.
мне нужно туда вставить отдельные значения из xml
и добраться я хочу до них с помощью querySelector

danik.js 10.08.2013 18:16

alex55, да успокойся. Все нормально. Никто тебя не заставляет вставить целый xml в див. Это сон, просто сон. Глубоко вздохни и работай дальше. Можешь кофейку въ*бать чтоб не уснуть и не увидеть очередной страшный сон с пытками и насилием.

alex55 10.08.2013 18:20

лучше напиши как сделать...

danik.js 10.08.2013 18:25

Цитата:

Сообщение от alex55
лучше напиши как сделать...

А что сделать?
Не знаю что сделать, но вот вариант:
Берешь значит отходишь от стены на максимальное расстояние, разбегаешься в сторону стены до упора и слегка выпячиваешь голову. Повторять до появления характерного щелчка.

alex55 10.08.2013 18:28

мудак

danik.js 10.08.2013 18:43

alex55, пожалуйста, только не плачь, я не хотел тебя расстраивать.
Я просто уведил единственный выход из сложившейся ситуации.

Deff 10.08.2013 20:01

alex55,
:) Загрузи в <object> если div не нравицо - хотя имхо - пофег куда, если тегов четно

danik.js 10.08.2013 21:04

Deff, а зачем туда грузить? Чем responseXML по-твоему плох?

Deff 11.08.2013 00:11

danik.js,
:write: Я мало парсил XML, т.е. те что грузил через json - парсил через innerHTML, ну и через яхо-трубу тож не парсится напрямую, -(короче, нет уверенного знания материала)


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