Войти
ПрограммированиеФорумВеб

Парсинг XML/HTML

Страницы: 1 2 Следующая »
#0
19:03, 10 авг. 2017

Пытаюсь как то сделать универсальный парсер HTML, хочу попробовать сделать рендерер одной старой технологии.
Допустим имеет такое:

class HTMLNode {
  HTMLNode[] Childs;
  HTMLAttribute[] Attributes;
  String Name;
}

как для ООП и управления DOM это отличная схема, но у меня нет идей как парсить(именно парсить, вырывать из текста чилды и.т.д), допустим вот это: <xuj><test><data>test</data></text></xuj>
обычный indexof и поиск конца тега сломается уже на <xuj><xuj></xuj></xuj>
Язык - Java


#1
19:20, 10 авг. 2017

Сначала тебе надо сделать простой SAX парсер, - а результаты его работы использовать для построения DOM

#2
19:30, 10 авг. 2017

0iStalker
пример можно? Именно парсинга.

#3
19:43, 10 авг. 2017

http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/iipXML/usax.html

#4
20:31, 10 авг. 2017
public class htmlparser {
    
    public static class htmlhandler extends DefaultHandler {

        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            System.out.println(localName);
        }
    
        
        
    }
    
    public htmlparser(String html) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            parser.parse(new ByteArrayInputStream(html.getBytes()), new htmlhandler());
        }
        catch(Exception e) {
            
        }
    }
Эмулятор j2me крашится...
#5
22:08, 10 авг. 2017

Тут уже где то выкладывали свои парсеры. но если хочешь поковыряться немного в говнокоде то вот тебе мой.
xmlparser

#6
1:10, 11 авг. 2017

Хтмл легко парсится последовательно вручную.
Каждый открытый тег помещается в FILO буфер. Встречая закрывающий тег достаем из буфера тег и сравниваем. Если совпадает то ок, если нет то верстка поломана. Примерно так.

#7
10:53, 11 авг. 2017

RadianTOR
Там не совсем HTML, WML но не суть.
Был бы на j2me antlr, таких вопросов бы не было.

#8
13:48, 11 авг. 2017

А что если парсить вглубь?
Вот так например:

Element el = parseElement(html);
if(el.hasChild()) {
  el.childs.add(el.child);
}
И так до конца.
Но тогда будет непонятно с < div >< p >xuj< /p >< span >xuj< /span >< /div >

#9
18:28, 23 авг. 2017

monobogdan
Ты это делаеш в учебных целях? Или почему не взять готовый парсер?

#10
18:40, 23 авг. 2017

HTML нельзя парсить SAX парсером, HTML не является XML-документом.
В отличии от XHTML.

0iStalker
Забанил бы этого тупого хелпвампира, который даже не способен тупо вбить в гугл что ему дают.

#11
18:43, 23 авг. 2017

Zx
Да

HTML нельзя парсить SAX парсером, HTML не является XML-документом.
В отличии от XHTML.

В чём то согласен.
Например потому что в xml конструкция вида <xuj> будет не валид
Забанил бы этого тупого хелпвампира, который даже не способен тупо вбить в гугл что ему дают.

Самозабанься
#12
20:09, 23 авг. 2017

monobogdan
> Был бы на j2me antlr, таких вопросов бы не было.
А просто работать со строками там нельзя?

#13
20:10, 23 авг. 2017

RadianTOR
Дело не в этом.
Дело в том что это надо как то парсить, и парсить эффективно учитывая что на j2me большинство девайсов 200мгц.

#14
2:28, 24 авг. 2017

Возьми готовый. Этого навалом уже.

Страницы: 1 2 Следующая »
ПрограммированиеФорумВеб

Тема в архиве.