- Este tópico contém 11 respostas, 2 vozes e foi atualizado pela última vez 13 anos atrás por rwarstat.
-
AutorPosts
-
30 de novembro de 2011 às 3:11 pm #101937rwarstatParticipante
Pessoal,
Estou tendo dificuldade para ler um xml que importei para o banco.
Criei a tabela mytable2
CREATE TABLE mytable2 OF XMLType;
Inseri o xml nela
INSERT INTO mytable2 VALUES (XMLType(bfilename('TESTE', '9-teste.xml'),
nls_charset_id('AL32UTF8')));Ao tentar extrair o valor da chave, me retorna branco
SELECT extractvalue(OBJECT_VALUE, 'DocData')
FROM mytable2;O conteúdo do arquivo é
Origem
Destino
SYNAPSE
I
981962034
application/pdf
981962034.pdf
FLAT
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
Abraço,
Roberto30 de novembro de 2011 às 5:12 pm #101945rmanParticipante@rwarstat
Posta o Desc da tabela mytable2 e como você está tentando consultar.
30 de novembro de 2011 às 5:35 pm #101947rwarstatParticipante@rman,
As infromações estão todas no primeiro post.
A tabela mytable2 é do tipo xmltype. O xml está lá dentro, pois abro ela pelo TOAD sem problemas.
E o select usado está logo acima do arquivo.30 de novembro de 2011 às 7:28 pm #101952rmanParticipante@rwarstat
Realmente todas as informações estão no primeiro tópico, agora que eu vi tem 1 KM de barra de rolagem horizontal. 😯
30 de novembro de 2011 às 7:50 pm #101953rmanParticipante@rwarstat
Creio que é a forma de navegação nos nós que esta incorreta, é necessário passar toda a hierarquia até o nó desejado.
Segue um exemplo de uso do extractvalue:
30 de novembro de 2011 às 7:51 pm #101954rwarstatParticipante@rman,
Desculpe pela barra quilométrica, mas precisava colocar o arquivo para que quem fosse ler pudesse ter uma idéia. E coloquei somente uma parte, pois ele é muito maior.
Mas isso é assunto para outro tópico, para quando eu conseguir ler esse conteúdo.30 de novembro de 2011 às 7:55 pm #101955rwarstatParticipante@rman,
Já coloquei de todas as maneiras possívies no extractvalue, mas mesmo assim não tenho o retorno de nenhuma informação.
Já li a documentação da Oracle sobre a manipulação de XML, e seguie ela, mas não consegui ter esse retorno.30 de novembro de 2011 às 8:05 pm #101956rmanParticipante@rwarstat
Tente da seguinte forma:
select extractValue(object_value,'/MESSAGE/DATAPACKET/DocData') from mytable2;
Será que a forma de inserção está correta ?
Da forma que foi feita foi feito o upload do arquivo xml e passado para o XMLType, o XMLType não está esperando uma string com a estruturado em XML ?
Faça um teste com aquele exemplo do link, veja se funciona.
30 de novembro de 2011 às 9:45 pm #101959rwarstatParticipante@rman
Testei da forma que tu passou e não funcionou também.
Estava fazendo pelo jeito em que é demonstrado em
http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb04cre.htm#i1032611
onde no exemplo ele carrega um xml para uma tabela e trabalha com ele assim.A abordagem do link que tu passou é interessante, mas para fazer aquilo eu teria que abrir o xml antes de colocar ele no banco, imagino que fazendo uma leitura como se fosse um arquivo texto.
Se eu conseguir abrir o xml como um arquivo texto eu pego o valor da DocData e trbalho com ele, não precisaria trabalhar como um xml. Mas, até mesmo para abrir como texto, lendo diretamente de um diretório, deu erro.1 de dezembro de 2011 às 2:38 pm #101963rwarstatParticipante@rman
Consegui acessar a chave que queria através do comando
select extractValue(object_value,'/MESSAGE/DATAPACKET/FILEDATA/DocData') from mytable2
Agora surgiu outro problema, mas é assunto para outro post. rsrsrs
Muito obrigado pela ajuda.
Abraço,
Roberto1 de dezembro de 2011 às 5:02 pm #101966rmanParticipante@rwarstat
É quase acertei, faltou passar por um nó na minha sugestão.
1 de dezembro de 2011 às 5:20 pm #101968rwarstatParticipante@rman
Foi de grande valia a tua ajuda. Através dela é que cheguei ao correto.
Muito obrigado. -
AutorPosts
- Você deve fazer login para responder a este tópico.