Очистка HTML на шаге ложки PDI (пользовательский класс java)

Привет, я использую шаг HTTP Client, чтобы получить исходный код веб-сайта. Мне нужно соскрести определенную часть одной строки.

пример строки: <a href="....." ......>TEXT I WANT</a>

поэтому я решил использовать UDJC в PDI и сначала разделить текстовый блок на строки с String[] lines = code.split("\n+");, а затем перебрать массив и с условием if (т.е. проверкой регулярного выражения) посмотреть, есть ли у меня правильная строка.

for(String line : lines){
        if line.matches(".*a href.*"){
            String outputString = code;
            break;
        }
    }

(Я пробую это также в IDE как чистую java без PDI), однако, у меня никогда не получалось. Есть идеи, как это исправить? Или есть более быстрый и простой способ получить желаемый кусок?


person Killerpixler    schedule 28.08.2014    source источник
comment
если ваш конкретный тег <a> можно каким-либо образом идентифицировать, я бы предложил выполнить синтаксический анализ как XML и использовать XPath для его поиска.   -  person Ian McLaird    schedule 28.08.2014


Ответы (1)


Я делаю что-то вроде того, что вы хотите, в аналогичном случае с шагом фильтра

Шаги трансформации:

  1. сгенерируйте строку с полем «dom», введите строку. ВАЖНО: ограничение должно быть 1 // pentaho нуждается в поле для https-шага, которое не требуется в следующих шагах
  2. http-step, получите html-дамп и установите для него имя поля "html" или что-то в этом роде (возможно, поле кода состояния было бы хорошо) // Проверяем с предварительным просмотром, есть ли там данные
  3. filter-step: http включает "<a href" // проверяем вывод
  4. JavaScript-Step с вашим регулярным выражением *, определите новое поле с желаемым выводом

* для регулярного выражения

person Seb    schedule 29.08.2014