запрос для извлечения значений из XML - PullRequest
0 голосов
/ 10 марта 2011

У меня есть xml, хранящийся в БД, я хочу извлечь некоторые части, такие как текст после текста, полный запрос.В xml у меня много запросов, и я хочу затем извлечь их.Есть ли у нас какой-то метод для этого.

Например: извлечь запрос, а не значение, XML встроен в БД и имеет формат, как показано ниже.text = "query1" text = "query2" text = "query3"

1 Ответ

0 голосов
/ 10 марта 2011

Вам нужно немного изучить использование Oracle XMLTYPE, но здесь есть быстрая функция из пакета, над которым я сейчас работаю, который показывает использование .existsnode для проверки того, что узел существует, и .extract для извлечения информация

FUNCTION parse_order_by_xml (p_xml_document IN XMLTYPE) RETURN varchar2
   IS
        /*** xml document structure *** start
        <?xml version="1.0"?>
        <OrderByClause>
            <OrderBy>
                <ColumnName>ELECTOR_ID</ColumnName>
                <Order>Asc</Order>
            </OrderBy>
            <OrderBy>
                <ColumnName>CREATED_TS</ColumnName>
                <Order>Desc</Order>
            </OrderBy>
        </OrderByClause>
        *** xml document structure *** end ***/
        l_order_by_string varchar2(3000) := 'ORDER BY ';
        l_index number;
   BEGIN
        l_index := 1;
        WHILE (p_xml_document.existsnode('/OrderByClause/OrderBy[' || to_char(l_index) || ']') = 1) LOOP
            l_order_by_string :=        l_order_by_string
                                    ||  p_xml_document.extract('/OrderByClause/OrderBy[' || to_char(l_index) || ']/ColumnName/text()').getStringVal()
                                    ||  ' '
                                    ||  p_xml_document.extract('/OrderByClause/OrderBy[' || to_char(l_index) || ']/Order/text()').getStringVal()
                                    ||  ',';
            l_index := l_index + 1;
        END LOOP;

        l_order_by_string := REGEXP_REPLACE(l_order_by_string, ',$');

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