Oracle XMLTABLE, root с атрибутом - PullRequest
       16

Oracle XMLTABLE, root с атрибутом

0 голосов
/ 15 апреля 2019

Oracle 12c.

У меня есть QUERY и XML:

 SELECT xt.*
   from  xmltable('/root/persons/person'
         passing xmltype('<root xmlns="import">
  <persons>
    <person>
       <id>John Doe</id>
    </person>
    <person>
       <id>Donald Duck</id>
    </person>
  </persons>
</root>')
         COLUMNS 
           id        VARCHAR2(10)  PATH 'id'
         ) xt

и это не работает. Если я удаляю xmlns = "import", то все работает нормально. Я пытался добавить:

xmltable('/root[@xmlns="import"]/persons/person'

и до сих пор не работает. Я делаю что-то не так?

1 Ответ

2 голосов
/ 15 апреля 2019

Поскольку упоминается пространство имен, добавьте объявление пространства имен в свой xquery.Попробуйте следующий код. Для получения более подробной информации см. Ссылку Надеюсь, это поможет.

 SELECT xt.*
       from  xmltable( xmlnamespaces(default 'import' ),
  '//persons/person'  passing   xmltype('<root xmlns="import">
      <persons>
        <person>
           <id>John Doe</id>
        </person>
        <person>
           <id>Donald Duck</id>
        </person>
      </persons>
    </root>')
             COLUMNS 
               id        VARCHAR2(100)  PATH 'id'
             ) xt
...