Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Парсинг XML/HTML

Парсинг XML/HTML

Поделиться

Страницы: 1 2 Следующая

monobogdanПостоялецwww10 авг. 201719:03#0
Пытаюсь как то сделать универсальный парсер HTML, хочу попробовать сделать рендерер одной старой технологии.
Допустим имеет такое:
class HTMLNode {
  HTMLNode[] Childs;
  HTMLAttribute[] Attributes;
  String Name;
}

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

Правка: 10 авг. 2017 19:03

0iStalkerМодераторwww10 авг. 201719:20#1
Сначала тебе надо сделать простой SAX парсер, - а результаты его работы использовать для построения DOM
monobogdanПостоялецwww10 авг. 201719:30#2
0iStalker
пример можно? Именно парсинга.
monobogdanПостоялецwww10 авг. 201720:31#4
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 крашится...
foxesПостоялецwww10 авг. 201722:08#5
Тут уже где то выкладывали свои парсеры. но если хочешь поковыряться немного в говнокоде то вот тебе мой.
xmlparser
RadianTORПостоялецwww11 авг. 20171:10#6
Хтмл легко парсится последовательно вручную.
Каждый открытый тег помещается в FILO буфер. Встречая закрывающий тег достаем из буфера тег и сравниваем. Если совпадает то ок, если нет то верстка поломана. Примерно так.

Правка: 11 авг. 2017 1:11

monobogdanПостоялецwww11 авг. 201710:53#7
RadianTOR
Там не совсем HTML, WML но не суть.
Был бы на j2me antlr, таких вопросов бы не было.
monobogdanПостоялецwww11 авг. 201713:48#8
А что если парсить вглубь?
Вот так например:
Element el = parseElement(html);
if(el.hasChild()) {
  el.childs.add(el.child);
}
И так до конца.
Но тогда будет непонятно с < div >< p >xuj< /p >< span >xuj< /span >< /div >

Правка: 11 авг. 2017 13:48

ZxПостоялецwww23 авг. 201718:28#9
monobogdan
Ты это делаеш в учебных целях? Или почему не взять готовый парсер?
9К720Участникwww23 авг. 201718:40#10
HTML нельзя парсить SAX парсером, HTML не является XML-документом.
В отличии от XHTML.

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

monobogdanПостоялецwww23 авг. 201718:43#11
Zx
Да
HTML нельзя парсить SAX парсером, HTML не является XML-документом.
В отличии от XHTML.

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

Самозабанься
RadianTORПостоялецwww23 авг. 201720:09#12
monobogdan
> Был бы на j2me antlr, таких вопросов бы не было.
А просто работать со строками там нельзя?
monobogdanПостоялецwww23 авг. 201720:10#13
RadianTOR
Дело не в этом.
Дело в том что это надо как то парсить, и парсить эффективно учитывая что на j2me большинство девайсов 200мгц.
romgermanПостоялецwww24 авг. 20172:28#14
Возьми готовый. Этого навалом уже.

Страницы: 1 2 Следующая

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

2001—2017 © GameDev.ru — Разработка игр