[EMAIL PROTECTED] wrote:
Bonjour,

Merci Gael et Philippe de votre aide!
Je peux maintenant parser comme je veux mon fichier XML.
Par contre, j'ai voulu tester les deux solutions, et je n'ai réussi à mettre en 
oeuvre que la solution proposée par Gael.
En effet, en utilisant celle de Philippe, j'ai l'erreur suivante:

org.apache.commons.jxpath.JXPathException: No value for xpath: 
/PubmedArticleSet/PubmedArticle/MedlineCitation/PMID

<snip/>

Pour récupérer un noeud, il y a aussi l'API JXPathContext qui s'avère très pratique à utiliser: var xpathContext = Packages.org.apache.commons.jxpath.JXPathContext.newContext(document.getDocumentElement());

var myData xpathContext.getValue("/your/xpath/condition[ position() != 2 ]/@attribute");

C'est probablement parce que je contexte est initialisé sur l'élément racine (getDocumentElement) et donc l'expression ne doit pas comporter le nom de cet élément.

On peut aussi créer le contexte sur le document lui-même.


3) fonction loadDocument

function loadDocument(uri)
{
var source = null;
var resolver = null;
var parser = null;

try
{
parser =
cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
source = resolver.resolveURI(uri);

var input = source.getInputStream()

var is = new Packages.org.xml.sax.InputSource(input);
is.setSystemId(source.getURI());

return parser.parseDocument(is);
}
finally
{
if (source != null) resolver.release(source);
cocoon.releaseComponent(parser);
cocoon.releaseComponent(resolver);
}
}

Une version plus simple, et qui évite d'utiliser un parser quand on utilise une source nativement XML (comme un "cocoon:" ou "xmldb:") :

function loadDocument(uri) {
var resolver = cocoon.getComponent("org.apache.excalibur.source.SourceResolver");
   var source = null;
   var document;
   try {
       source = resolver.resolveURI(uri);
document = Packages.org.apache.cocoon.components.source.SourceUtil.toDOM(source);
   } finally {
       resolver.release(source);
       cocoon.releaseComponent(resolver);
   }
   return document;
}

Sylvain

--
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]

Répondre à