Sélectionnez l'élément xml valeur dans Oracle
Je suis en train d'extraire une valeur d'un élément xml, situé dans un XMLTYPE d'une colonne dans une Table Oracle. L'élément xml qui je suis en train d'extraire un parent pour lequel un espace est défini.
Le xml ressemble à quelque chose comme:
<a>
<b xmlns="urn:www.someSite.com/myModel">
<c>my value</c>
</b>
</a>
Si je veux extraire le contenu de la "une" de l'élément, son contexte est retournés correctement:
SELECT Extract(myColumn, '/a') FROM myTable;
Mais pour retourner le contenu de la "c" de l'élément que je n'ai pas réussi à trouver une version de travail. Les instructions suivantes ne fonctionne pas:
SELECT Extract(myColumn, '/a/b/c') FROM myTable;
SELECT Extract(myColumn, '/a/b/c', 'xmlns="urn:www.someSite.com/myModel"') FROM myTable;
SELECT Extract(myColumn, '/a/b/c', 'urn:www.someSite.com/myModel') FROM myTable;
Quelqu'un peut-il m'aider, avec l'extrait de déclaration de travail dans ce cas?
OriginalL'auteur axl g | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Depuis le
a
élément n'a pas l'espace de noms, vous pouvez tout d'abord extraire ses éléments enfant sans l'aide d'espaces de noms dans la fonction, puis extraire la valeur de lab
avec l'espace de noms:Essayez:
OriginalL'auteur A.B.Cade
J'ajouterai que c'est aussi la meilleure solution moderne depuis maintenant extraire/extractvalue sont amortis.
OriginalL'auteur Jokke Heikkilä
Lorsque l'espace de noms par défaut des changements, un moyen de préciser les espaces de noms est d'écrire le caractère générique ( " * " ) et le local-name() et namespace-uri() fonctions XPath.
select extract(myColumn, '/a/*[local-name()='b' and namespace-uri()='urn:www.someSite.com/myModel']/*[local-name()='c' and namespace-uri()='urn:www.someSite.com/myModel']')
from myTable
OriginalL'auteur Miguel Angel Maroto
OriginalL'auteur sony