Как получить текст и другие теги между определенными тегами с помощью HTML-парсера Jericho?

У меня есть файл HTML, который содержит определенный тег, например. <TABLE cellspacing=0> и конечный тег </TABLE>. Теперь я хочу получить все между этими тегами. Я использую HTML-парсер Jericho на Java для анализа HTML. Можно ли получить текст и другие теги между определенными тегами в парсере Jericho?

Например:

<TABLE  cellspacing=0>    
  <tr><td>HELLO</td>  
  <td>How are you</td></tr>
</TABLE>

Отвечать:

<tr><td>HELLO</td>  
<td>How are you</td></tr> 

person insomiac    schedule 11.04.2011    source источник
comment
Фрагмент ответа ниже содержит не только текст, но и HTML. Так что ваше требование немного сбивает с толку. Вы хотите извлечь вложенный HTML, как указано в вашем примере, или вы действительно хотите извлечь только текст, что, однако, приведет к HELLO How are you без какого-либо HTML.   -  person BalusC    schedule 11.04.2011
comment
Привет, Balus C, мне нужно все, что находится между тегами ‹Table›. Является ли это возможным?   -  person insomiac    schedule 11.04.2011
comment
Вы хотите получить HTML или текст? Заголовок и тело вашего вопроса говорят о том, что вы хотите получить текст. Но ваш пример кода показывает, что вы хотите получить HTML.   -  person BalusC    schedule 11.04.2011
comment
Спасибо, что дал мне знать. Я изменил название. Я тоже хочу теги HTML и ТЕКСТ.   -  person insomiac    schedule 11.04.2011


Ответы (2)


Как только вы нашли элемент своей таблицы, все, что вам нужно сделать, это вызвать getContent().toString(). Вот краткий пример использования вашего образца HTML:

Source source = new Source("<TABLE  cellspacing=0>\n" +
    "  <tr><td>HELLO</td>  \n" +
    "  <td>How are you</td></tr>\n" +
    "</TABLE>");

Element table = source.getFirstElement();
String tableContent = table.getContent().toString();

System.out.println(tableContent);

Выход:

    <tr><td>HELLO</td>  
    <td>How are you</td></tr>
person stevevls    schedule 11.04.2011
comment
Я отредактировал свой ответ, чтобы сделать его более понятным. Кроме того, я оговорился, и getContent() доступен только для элементов, а не для всех сегментов (сегмент — это суперкласс для всех проанализированных узлов в Иерихоне). - person stevevls; 12.04.2011
comment
У меня есть весь файл HTML, а затем я хочу его проанализировать. можно ли получить конкретный тег из всего файла HTML? - person insomiac; 13.04.2011
comment
Да, но сначала вам придется найти его. Создайте свой Source из HTML-документа, затем вы получите List таких таблиц: List<Element> tables = source.getAllElements(HTMLElementName.TABLE); Другие способы обхода проанализированного документа см. в javadoc: jericho.htmlparser.net/docs/javadoc/index.html. - person stevevls; 13.04.2011
comment
поэтому, если в одном HTML есть несколько таблиц. Это даст мне все содержимое между всеми тегами таблицы? - person insomiac; 13.04.2011
comment
если бы ваш цикл был: for(Element table : source.getAllElements(HTMLElementName.TABLE)) { System.out.println(table.getContent().toString()); }, вы бы распечатали все содержимое между всеми тегами таблицы. - person stevevls; 13.04.2011

Аби, я просматриваю код всех элементов и показываю на экране. Может быть, помочь вам.

        List<Element> elementListTd = source.getAllElements(HTMLElementName.TD);

        //Scroll through the list of elements "td" page
        for (Element element : elementListTd) {
            if (element.getAttributes() != null) {
                String td = element.getAllElements().toString();
                String tag = "td";
                System.out.println("TD: " + td);
                System.out.println(element.getContent());
                String conteudoAtributo = element.getTextExtractor().toString();
                System.out.println(conteudoAtributo);

                if (td.contains(palavraCompara)) {
                    tabela.add(conteudoAtributo);
                }

            }
person Deb    schedule 09.06.2011