Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как распарсить html (https://javascript.ru/forum/offtopic/60087-kak-rasparsit-html.html)

cyber 10.12.2015 18:53

MallSerg, один из вариантов)
Попробую, звучит быстрее, чем то что я придумал)

cyber 10.12.2015 19:16

Есть интересная идея, например есть xml, берем его обрезаем до того места что нужно и кидаем в DOMParser, а потом берем последний элемент в дереве.

var xml = '<!--?xmlversion="1.0"encoding="UTF-8"?--><breakfast_menu><food><name>BelgianWaffles</name><price>$5.95</price><description >OurfamousBelgianWaffleswithplentyofrealmaplesyrup</description><calories>650</calories></food><food><name>FrenchToast</name><price>$4.50</price><description>Thickslicesmadefromourhomemadesourdoughbread</description><calories>600</calories></food><food><name>HomestyleBreakfast</name><price>$6.95</price><description>Twoeggs,baconorsausage,toast,andourever-popularhashbrowns</description><calories>950</calories></food></breakfast_menu>';


var halfXML = "<breakfast_menu><food><name>BelgianWaffles</name><price>$5.95</price><description >OurfamousBelgianWaffleswithplentyofrealmaplesyrup"; //обзеранный xml
p.parseFromString(halfXML, "application/xml") // потом пройтись по объекту и найти самый последний элемент

Mаxmaxmаximus 11.12.2015 00:41

cyber, не ожидал от тя такого вопроса еси честно))

var xml = "<test> <tag>  <t>\n</t>  </tag> </test>";
document = new DOMParser().parseFromString(xml, "text/xml");


а для селекторов применяешь https://developer.mozilla.org/en-US/..._in_JavaScript

Mаxmaxmаximus 11.12.2015 00:45

а, стоп, прочитал задачу, так это же легко, просто начинай от этого символа и иди назад считая открывающие теги) в чем трабл то? тебе код написать?


я прсото уже парсеров написал штук 10 за этот год, щас вот пишу парсер для coffee++

cyber 11.12.2015 00:50

Цитата:

Сообщение от Mаxmaxmаximus
а, стоп, прочитал задачу, так это же легко, просто начинай от этого символа и иди назад считая открывающие теги) в чем трабл то? тебе код написать?

Давай, гляну твое решение)
Просто не все так просто, мне не просто нужно получить элемент, а его родителя, я хотел получить сначала элемент добавить id вкинуть в DOMParser и по id найти его и взять родителя

Mаxmaxmаximus 11.12.2015 01:44

я не совсем понимаю что значит "получить"

Mаxmaxmаximus 11.12.2015 01:45

блин чет у меня долго слишком молучается я написал парсер но когда понял что задача стоит получить в значении как дом элемнет я понял что это дольше чем я могу себе позволить, вот парсер не знаю поможет ли, прости но работать надо, дедлайны все дела

xml = '<test aa="22"> <tag>  <t>\n</t>  </tag> </test>'
		index = 40
		code = xml.slice(0, index)

		tags = []
		regExp = /<(\/)?(\w+)?.*?/img
		code.replace regExp, (match, isClose, name)->
			tags.push {name, isClose: !!isClose}

		console.log tags
		console.log code
		return

Mаxmaxmаximus 11.12.2015 01:47

Ну а так да, самый лучший вариант просто поставить айдишник ему и получить по айди, если тебе надо получить именно в значении УЗНАТЬ КАКОЙ ЭЛЕМЕНТ В ДОКУМЕНТЕ ОПИСАН В СИМВОЛЕ ПО ТАКОМУ ТО ИНДЕКСУ И ПОЛУЧИТЬ ЕГО РОДИТЕЛЯ, то ты назвал самое очевидное решение, тогда почему его не сделаешь просто)?

тут даже парсеры писать не надо, ну вообще можно там рендж применить типа, берешь и выделение делаешь и смотришь что влезло в выделение, document.creageRange() но там гуглить надо про него, я не помню нифига)

cyber 11.12.2015 01:47

Mаxmaxmаximus,
вот что я написал http://jsfiddle.net/c9cws7au/3/

Mаxmaxmаximus 11.12.2015 01:47

тут даже парсеры писать не надо, ну вообще можно там рендж применить типа, берешь и выделение делаешь и смотришь что влезло в выделение, document.creageRange() но там гуглить надо про него, я не помню нифига)


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