Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery парсинг XML (https://javascript.ru/forum/jquery/53995-jquery-parsing-xml.html)

ssaich 27.02.2015 09:08

Jquery парсинг XML
 
есть xml

<?xml version="1.0" encoding="UTF-8"?>
<item>
<description><a href="http://host/xml/index.html">121212</a></description>
</item>


код

$(xml_one).find("item").each(function () {							  

        $(".div_pars").append('<div>' + $(this).find("description").text() + '</div>');


Подскажите пожалуйста как вытащить ссылку целиком ?
<a href="http://host/xml/index.html">121212</a>


а то парситься только текст 121212

laimas 27.02.2015 09:21

$(this).find("description").html()

ssaich 27.02.2015 09:49

Цитата:

Сообщение от laimas (Сообщение 358685)
$(this).find("description").html()

Спс вот я ламер)

ssaich 27.02.2015 09:58

А как к примеру вытащить второй либо третий элемент ?

<item>
<a href="http://host/xml/index.html">1</a>
</item>
<item>
<a href="http://host/xml/index.html">2</a>
</item>
<item>
<a href="http://host/xml/index.html">3</a>
</item>

laimas 27.02.2015 10:02

$(this).find("item").eq(index).html() - где index, индекс требуемого элемента

ssaich 04.03.2015 14:08

А не могли бы подсказать почему в IE это код не работает ?

laimas 04.03.2015 14:24

Какой код, эта строка - $(this).find("item").eq(index).html()? И в каком IE?

ssaich 04.03.2015 14:29

Цитата:

Сообщение от laimas (Сообщение 359548)
Какой код, эта строка - $(this).find("item").eq(index).html()? И в каком IE?


IE 8 например

laimas 04.03.2015 14:34

В IE8 такое выражение будет работать без проблем, а вот структура ваших данных для IE8 может быть "не перевариваемой", отсюда и проблемы.

Отладчик какой никакой но в нем есть, смотрите в нем причину.

ssaich 04.03.2015 14:40

строки из xml файла, xml файл нормально открывается IE , без ошибок,
но результат не выдает

а вот ошибки

HTML1524: Недопустимое DOCTYPE. Самое краткое из допустимых DOCTYPE — "<!DOCTYPE html>".
xml, строка 1 символ 1
SCRIPT5007: Не удалось получить свойство "replace" ссылки, значение которой не определено или является NULL
jquery-1.7.js, строка 4 символ 286

ssaich 04.03.2015 14:49

.innerHTML.replace

может ?

laimas 04.03.2015 18:15

Нет, дело в том, что вы работаете с xml-объектом, а в нем нет такого свойства. IE8 "старичок", и в xml-объекте не найдет такого, ибо свойства innerHTML в нем нет.

Если нужно получить html-содержимое элемента item, а это будет элемента А, тогда обращайтесь к нему и получайте его свойство xml:

alert(xmlDoc.find('a').eq(1).get(0).xml)


получит код второго элемент А документа xmlDoc.

Например здесь можно узнать о свойствах xml.

ssaich 04.03.2015 23:39

Цитата:

Сообщение от laimas (Сообщение 359611)
Нет, дело в том, что вы работаете с xml-объектом, а в нем нет такого свойства. IE8 "старичок", и в xml-объекте не найдет такого, ибо свойства innerHTML в нем нет.

Если нужно получить html-содержимое элемента item, а это будет элемента А, тогда обращайтесь к нему и получайте его свойство xml:

alert(xmlDoc.find('a').eq(1).get(0).xml)


получит код второго элемент А документа xmlDoc.

Например здесь можно узнать о свойствах xml.


$(document).ready(function () {

$.ajax({
type: "GET",
url: "myxml.xml",
dataType: "xml",
success: xm
});
});

function xm(xml) {

alert($(xml).find('item').eq(1).get(0).xml);

}

получаю -- undefined

а в IE даже вызов Алерта не происходит, мне просто бы с Jquery нужно ) а за ссылочку спасибо, если с помощью Jquery
для IE не реально ... то

laimas 05.03.2015 03:43

Ну почему не реально, jQuery в данном случае как чернорабичий, дабы достучаться до элемента, а заем get(0) - возвратили DOM, и работаем с ним. Выполните это:

$(function() {
var xmldoc = '<?xml version="1.0"?><list_of_items><item><a>1</a></item><item><a>2</a></item><item><a>3</a></item></list_of_items>',
    xmldoc = $($.parseXML(xmldoc));    
    alert(xmldoc.find('a').eq(1).get(0).xml)
});


Здесь из строки валидного xml jQuery получает его, и работает с ним. Если у вас не получается, значит есть ошибки.


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