28.06.2012, 15:01
|
Аспирант
|
|
Регистрация: 19.11.2011
Сообщений: 77
|
|
парсинг html-строки? Рег выражения?
Здравствуйте, мне нужно парсить вот такую строку,
<map id="test" name="test">
<area shape="poly" coords="1583,172,1589,172,1589,178,1583,178,1583,172,1583,172" title="Line1: (29.04.01 06:00, 18,738)" alt="" nohref="nohref"/>
<area shape="poly" coords="1330,152,1336,152,1336,158,1330,158,1330,152,1330,152" title="Line1: (29.04.01 05:00, 20,279)" alt="" nohref="nohref"/>
<area shape="poly" coords="1077,133,1083,133,1083,139,1077,139,1077,133,1077,133" title="Line1: (29.04.01 04:00, 21,814)" alt="" nohref="nohref"/>
<area shape="poly" coords="824,114,830,114,830,120,824,120,824,114,824,114" title="Line1: (29.04.01 03:00, 23,345)" alt="" nohref="nohref"/>
</map>
<map id="test" name="test">
<area shape="poly" coords="571,94,577,94,577,100,571,100,571,94,571,94" title="Line1: (29.04.01 02:00, 24,869)" alt="" nohref="nohref"/>
<area shape="poly" coords="318,75,324,75,324,81,318,81,318,75,318,75" title="Line1: (29.04.01 01:00, 26,387)" alt="" nohref="nohref"/>
<area shape="poly" coords="66,56,72,56,72,62,66,62,66,56,66,56" title="Line1: (29.04.01 00:00, 27,899)" alt="" nohref="nohref"/>
</map>
отсюда мне нужно получить например массив или строку, которая содержыт только элементы
<area shape="poly" coords="824,114,830,114,830,120,824,120,824,114,824,114" title="Line1: (29.04.01 03:00, 23,345)" alt="" nohref="nohref"/>
почитал про "рег выражения" - кажется самый хороший вариант.
но что-то пока не приходят мысли как это сделать.
Может кто подскажет?
Спасибо.
|
|
28.06.2012, 15:13
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
var str = '<map id="test" name="test">\
<area shape="poly" coords="1583,172,1589,172,1589,178,1583,178,1583,172,1583,172" title="Line1: (29.04.01 06:00, 18,738)" alt="" nohref="nohref"/>\
<area shape="poly" coords="1330,152,1336,152,1336,158,1330,158,1330,152,1330,152" title="Line1: (29.04.01 05:00, 20,279)" alt="" nohref="nohref"/>\
<area shape="poly" coords="1077,133,1083,133,1083,139,1077,139,1077,133,1077,133" title="Line1: (29.04.01 04:00, 21,814)" alt="" nohref="nohref"/>\
<area shape="poly" coords="824,114,830,114,830,120,824,120,824,114,824,114" title="Line1: (29.04.01 03:00, 23,345)" alt="" nohref="nohref"/>\
</map>\
<map id="test" name="test">\
<area shape="poly" coords="571,94,577,94,577,100,571,100,571,94,571,94" title="Line1: (29.04.01 02:00, 24,869)" alt="" nohref="nohref"/>\
<area shape="poly" coords="318,75,324,75,324,81,318,81,318,75,318,75" title="Line1: (29.04.01 01:00, 26,387)" alt="" nohref="nohref"/>\
<area shape="poly" coords="66,56,72,56,72,62,66,62,66,56,66,56" title="Line1: (29.04.01 00:00, 27,899)" alt="" nohref="nohref"/>\
</map>';
var res = str.match( /(<area(?:[^>]*)>)/ig );
alert( res.join( "\n\n" ));
|
|
28.06.2012, 15:19
|
Профессор
|
|
Регистрация: 07.06.2011
Сообщений: 315
|
|
да ну ладно вам, это же классика. нельзя использовать регулярки для парсинга хтмл!
var map = document.getElementsById('test');
var areas = map.getElementsByTagName('area');
Последний раз редактировалось tadjik1, 28.06.2012 в 15:25.
|
|
28.06.2012, 15:48
|
Аспирант
|
|
Регистрация: 19.11.2011
Сообщений: 77
|
|
devote - пасиб, работает
Сообщение от tadjik1
|
да ну ладно вам, это же классика. нельзя использовать регулярки для парсинга хтмл!
var map = document.getElementsById('test');
var areas = map.getElementsByTagName('area');
|
- я строку получаю с сервера, поэтому мне кажется - рег выражение, самое то. У меня нету этого елемента в dom.
|
|
28.06.2012, 16:04
|
Профессор
|
|
Регистрация: 07.06.2011
Сообщений: 315
|
|
Сообщение от JDev
|
я строку получаю с сервера, поэтому мне кажется - рег выражение, самое то. У меня нету этого елемента в dom.
|
скорее всего эта строка уже и есть XMLDocument, а у него есть методы getElementsById и getElementsByTagName. попробуйте
UPD. ну а если совсем не нравится, то можно вот так: http://www.w3schools.com/xml/xml_parser.asp
только не регулярками)))
Последний раз редактировалось tadjik1, 28.06.2012 в 16:10.
|
|
28.06.2012, 16:35
|
Аспирант
|
|
Регистрация: 19.11.2011
Сообщений: 77
|
|
Сообщение от tadjik1
|
скорее всего эта строка уже и есть XMLDocument, а у него есть методы getElementsById и getElementsByTagName. попробуйте
UPD. ну а если совсем не нравится, то можно вот так: http://www.w3schools.com/xml/xml_parser.asp
только не регулярками)))
|
- я не писал такое с чего вы взяли это? Я получаю эту строчку как (сookie) с сервера(на томкате мною написанный сервлет который по запросу. выдает клиенту определенную map).
бррррр и откуда у меня xml? Я видимо не понимаю на какую мысль вы меня хотите навести.
|
|
28.06.2012, 16:41
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от JDev
|
- я не писал такое с чего вы взяли это? Я получаю эту строчку как (сookie) с сервера(на томкате мною написанный сервлет который по запросу. выдает клиенту определенную map).
бррррр и откуда у меня xml? Я видимо не понимаю на какую мысль вы меня хотите навести.
|
если использовать линк tadjik1, то вы тем самым преобразуете эту строку в XML-фрагмент...и сможете работать с ней обычными методами...
или добавить данный фрагмент при получении в какой-нибудь невидимый div на странице и работать как с частью DOM...
|
|
28.06.2012, 16:42
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
tadjik1,
да какая тебе разница как человек обрабатывает строку.. Человек попросил решения, ему его дали. Попросил бы решения распарсить XML получил бы решения того как это делается..
|
|
28.06.2012, 16:51
|
Аспирант
|
|
Регистрация: 19.11.2011
Сообщений: 77
|
|
devote - пасиб за понимание.
|
|
28.06.2012, 16:52
|
Аспирант
|
|
Регистрация: 19.11.2011
Сообщений: 77
|
|
lord2kim - пасиб за объяснение.
|
|
|
|