Разбор HTML-поля в запросе postgresql - PullRequest
0 голосов
/ 26 октября 2018

У меня есть текстовое поле, содержащее таблицу HTML в базе данных PostgreSQL.Я хотел бы извлечь некоторые данные из этого поля: каждый TR (не из заголовка) в строке и каждый TD в столбце.Возможно ли это?

Имя таблицы - «documentsmentos», а имя текстового поля, содержащего таблицу HTML, - «props».Реквизит содержит следующее:

select props
from documentos
where uidref = 'ee41f201-0049-41e9-9c5d-5c35e2cf73ac'

content of props field

И я хотел бы получить:

444444444 | Investigador | Daniel | Perez
555555555 | Becario      | Jorge  | Fernandez

Заранее спасибо!

1 Ответ

0 голосов
/ 27 октября 2018

У меня нет опыта работы с PostreSQL и очень мало опыта с XPATH, но я смог получить кое-что для вас:

with x as (select
'<TABLE>
        <TBODY>
            <TR>
                <TH class="RowTitle">Identificacion</TH>
                <TH class="colRol">Rol</TH>
            </TR>
            <TR class="tData">
                <TD class="RowTitle">
                    <A href="#">4444</A>
                </TD>
                <TD class="colRow" val="INVARGEXT">Investigador</TD>
            </TR>
            <TR class="tData">
                <TD class="RowTitle">
                    <A href="#">55555</A>
                </TD>
                <TD class="colRow" val="BECARIO">Becario</TD>
            </TR>
        </TBODY>
    </TABLE>'::xml as t
),
y as (select unnest(xpath('//TR[@class="tData"]', t)) td from x)
select -- y.td, -- just to debug
xpath('//TD[@class="RowTitle"]/A/text()', y.td),
xpath('//TD/text()', y.td)
from y;

Это выводит:

    xpath   xpath
1   4444                                        Investigador
2   55555                                       Becario

Я надеюсь, что это можетбыть полезным.

Дополнительная информация здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...