J'ai un document XML qui contient les éléments suivants
...
<foo>abc</foo>
...
Si j'évalue
return $xml//foo
Je reviens
<foo>abc</foo>
Existe-t-il un moyen d'obtenir uniquement abc
à la place?
Oui, vous voulez la fonction text () pour sélectionner le texte enfant:
return $xml/text()
Soyez prudent si vous aurez une structure de balise imbriquée dans $ xml, car cela n'approfondira qu'un niveau pour les nœuds de texte. Si vous souhaitez regrouper tous les nœuds de texte, en supprimant toute autre structure XML, vous obtiendrez une profondeur arbitraire:
return $xml//text()
Utilisez la fonction string pour obtenir le contenu de la chaîne d'un nœud.
return string($xml)
Pour ne renvoyer que les données d'un élément, vous pouvez utiliser:
return data($xml)
Les utilisateurs de OSB (Oracle Service Bus) peuvent utiliser la fonction suivante.
fn-bea:serialize($xml)
Cast vers xs: string {xs:string($xml/foo)}