Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2012, 15:01
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 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"/>


почитал про "рег выражения" - кажется самый хороший вариант.
но что-то пока не приходят мысли как это сделать.
Может кто подскажет?
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2012, 15:13
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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" ));
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2012, 15:19
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

да ну ладно вам, это же классика. нельзя использовать регулярки для парсинга хтмл!

var map = document.getElementsById('test');
var areas = map.getElementsByTagName('area');

Последний раз редактировалось tadjik1, 28.06.2012 в 15:25.
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2012, 15:48
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

devote - пасиб, работает


Сообщение от tadjik1 Посмотреть сообщение
да ну ладно вам, это же классика. нельзя использовать регулярки для парсинга хтмл!

var map = document.getElementsById('test');
var areas = map.getElementsByTagName('area');
- я строку получаю с сервера, поэтому мне кажется - рег выражение, самое то. У меня нету этого елемента в dom.
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2012, 16:04
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

Сообщение от JDev
я строку получаю с сервера, поэтому мне кажется - рег выражение, самое то. У меня нету этого елемента в dom.
скорее всего эта строка уже и есть XMLDocument, а у него есть методы getElementsById и getElementsByTagName. попробуйте

UPD. ну а если совсем не нравится, то можно вот так: http://www.w3schools.com/xml/xml_parser.asp
только не регулярками)))

Последний раз редактировалось tadjik1, 28.06.2012 в 16:10.
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2012, 16:35
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

Сообщение от tadjik1 Посмотреть сообщение
скорее всего эта строка уже и есть XMLDocument, а у него есть методы getElementsById и getElementsByTagName. попробуйте

UPD. ну а если совсем не нравится, то можно вот так: http://www.w3schools.com/xml/xml_parser.asp
только не регулярками)))
- я не писал такое с чего вы взяли это? Я получаю эту строчку как (сookie) с сервера(на томкате мною написанный сервлет который по запросу. выдает клиенту определенную map).
бррррр и откуда у меня xml? Я видимо не понимаю на какую мысль вы меня хотите навести.
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2012, 16:41
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от JDev Посмотреть сообщение
- я не писал такое с чего вы взяли это? Я получаю эту строчку как (сookie) с сервера(на томкате мною написанный сервлет который по запросу. выдает клиенту определенную map).
бррррр и откуда у меня xml? Я видимо не понимаю на какую мысль вы меня хотите навести.
если использовать линк tadjik1, то вы тем самым преобразуете эту строку в XML-фрагмент...и сможете работать с ней обычными методами...
или добавить данный фрагмент при получении в какой-нибудь невидимый div на странице и работать как с частью DOM...
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2012, 16:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

tadjik1,
да какая тебе разница как человек обрабатывает строку.. Человек попросил решения, ему его дали. Попросил бы решения распарсить XML получил бы решения того как это делается..
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2012, 16:51
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

devote - пасиб за понимание.
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2012, 16:52
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

lord2kim - пасиб за объяснение.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг текста с html странички Grarnik Общие вопросы Javascript 10 17.09.2011 14:06
Ограничить длину строки с помощью регулярного выражения pro_xaoc Элементы интерфейса 2 07.08.2011 15:58
HTML парсинг 350d jQuery 3 13.10.2010 23:08
custom Парсинг HTML нужен Increazon Общие вопросы Javascript 8 15.09.2010 13:23