Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 И снова xmlnamespaces  [new]
ryasal
Member

Откуда: Россия
Сообщений: 152
Есть вот такой запрос:
SELECT t.last_name,
       t.name
  FROM xmltable(xmlnamespaces(DEFAULT 'create.ru'),
                 '/First/Second/Third' passing XMLTYPE
('<?xml version="1.0" encoding="Windows-1251" ?>
<First xmlns="create.ru">
  <Second>
    <Third Нпп="1" xmlns="">
      <Фамилия>Иванов</Фамилия>
      <Имя>Иван</Имя>
    </Third>
  </Second>
</First>'
) COLUMNS last_name VARCHAR2(255) path 'Фамилия',
          NAME      VARCHAR2(255) path 'Имя') t


Из-за того, что в теге Third есть xmlns="", запрос ничего не возвращает. Убираем xmlns="" и все работает.
Как обработать эту ситуацию, не делая replace для xmlns=""?
22 май 12, 13:57    [12594466]     Ответить | Цитировать Сообщить модератору
 Re: И снова xmlnamespaces  [new]
кто-то из толпы
Guest
SELECT t.last_name,
t.name
FROM xmltable(xmlnamespaces( 'create.ru' as "cre" --DEFAULT 'create.ru'
),
'/cre:First/cre:Second/Third' passing XMLTYPE
('<?xml version="1.0" encoding="Windows-1251" ?>
<First xmlns="create.ru">
<Second>
<Third Нпп="1" xmlns="">
<Фамилия>Иванов</Фамилия>
<Имя>Иван</Имя>
</Third>
</Second>
</First>'
) COLUMNS last_name VARCHAR2(255) path 'Фамилия',
NAME VARCHAR2(255) path 'Имя') t
;
22 май 12, 14:33    [12594843]     Ответить | Цитировать Сообщить модератору
 Re: И снова xmlnamespaces  [new]
ryasal
Member

Откуда: Россия
Сообщений: 152
Да, сработало, спасибо.

К сожалению, в моем случае не получиться это использовать, т.к. XML может как содержать xmlns="", так и не содержать эту строку.
Использовал replace, чтобы вообще убрать xmlns="".
22 май 12, 16:24    [12595793]     Ответить | Цитировать Сообщить модератору
 Re: И снова xmlnamespaces  [new]
Dmitry.
Member

Откуда: Boston, MA
Сообщений: 849
SELECT t.last_name,
t.name
FROM xmltable(xmlnamespaces( 'create.ru' as "cre" --DEFAULT 'create.ru'
),
'/cre:First/cre:Second/*[local-name()="Third"]' passing XMLTYPE
('<?xml version="1.0" encoding="Windows-1251" ?>
<First xmlns="create.ru">
<Second>
<Third Нпп="1">
<Фамилия>Иванов</Фамилия>
<Имя>Иван</Имя>
</Third>
</Second>
</First>'
) COLUMNS last_name VARCHAR2(255) path '*[local-name()="Фамилия"]',
NAME VARCHAR2(255) path '*[local-name()="Имя"]') t
/
22 май 12, 16:33    [12595877]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить