Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

xml tech : Technologies XML

[xml-tech] Re: utiliser Xercès pour parser un InputStream ou String?

[xml-tech] Re: utiliser Xercès pour parser un InputStream ou String?

Auteur: <sjarlier@stradefi.com>
Date: 19/05/2006 - 08:19
X-Mailer: Microsoft Office Outlook 11

Merci infiniment.

J'ai quelques soucis pour récupérer la valeur stockée entre tag.
S'il vous plait pourriez-vous me dire ce que je fais de faux?

J'ai un XML comme suit (en plus complexe):

<?xml version="1.0" encoding="UTF-8"?>
<alf-config>
        <label>label</label>
        <!--comment-->
        <procedure-condition>condition</procedure-condition>
</alf-config>

Ensuite j'appelle mon constructeur avec le contenu de mon XML (un String):

public EthicFlow_DomXMLParser(String xmlContent)
{
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                
        try {
                        
                // ** Using factory get an instance of document builder
                DocumentBuilder db = dbf.newDocumentBuilder();
                        
                // ** Reader Writer creation from xmlContent
                this.in = new StringReader(xmlContent);
              this.out = new StringWriter();
                
              // ** Parse using builder to get DOM representation of the XML
//file
                this.dom = db.parse(new InputSource(this.in));
                                
                }catch(ParserConfigurationException pce) {
                        pce.printStackTrace();
                }catch(SAXException se) {
                        se.printStackTrace();
                }catch(IOException ioe) {
                        ioe.printStackTrace();
                }
 }

Et ensuite je veux récupérer procedure-condition c'est-a-dire "condition"
comme ceci:

public String domXMLParser_getProcedureCondition()
{
        String procedureCondition = null;
        try
        {
                String xpath = "/alf-config/procedure-condition";
NodeList nl = XPathAPI.selectNodeList(this.dom, xpath);
                Element element = (Element)nl.item(0);
                procedureCondition = element.getNodeValue();
                
        }
        catch(TransformerException te){
        
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(FacesConte
xt.getCurrentInstance(), "TransformerException"), te
                               .getMessage()), te); //te.printStackTrace();
        }
                
        return procedureCondition;
}

Et ca ne plante pas mais je récupère null au lieu de "condition"...

Merci d'avance
Sophie

-----Message d'origine-----
De : xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org] De la part
de Jean-Marc Desprez
Envoyé : jeudi 18 mai 2006 22:41
À : xml-tech@xmlfr.org
Objet : [xml-tech] Re: utiliser Xercès pour parser un InputStream ou String?

Re,
Quand on fait ca:
>
> Source s = new DOMSource(dom);
> Result result = new StreamResult(out);
> Transformer xformer = TransformerFactory.newInstance ().newTransformer();
> xformer.transform(s, result);
> System.out.println(out.toString());
>
> Comment est-ce que la liste des noeuds a-t-elle été récupérée?

La liste des noeuds est dans ton objet Document (dom)
Voir http://www.docjar.com/docs/api/org/w3c/dom/Document.html pour plus
d'info
Elle a été récupérer par la méthode parse du DocumentBuilder

On modifie dom en modifiant nodes...

Oui

Je ne comprends pas bien comment out a été
> modifié? Comment ce Transformer marche?

L'objet Transformer est utilisé pour appliquer une transformation xsl à
une
source xml
Voir http://www.docjar.com/docs/api/javax/xml/transform/Transformer.htmlpour
la doc

Donc on a xml + xsl = un autre xml tranformé
La signature de tranform :

public abstract void *transform*(Source
<http://www.docjar.com/docs/api/javax/xml/transform/Source.html>
xmlSource,
                               Result
<http://www.docjar.com/docs/api/javax/xml/transform/Result.html>
outputTarget)

Donc on à la source (le xml) et on indique un objet Result qui va contenir
le résultat.
Parenthèse : Et le xsl dans tout ça ?
Là il faut remonter à la création de l'objet Transformer
Il est obtenu à partir d'un objet TransformerFactory
doc :
http://www.docjar.com/docs/api/javax/xml/transform/TransformerFactory.html

Dans notre cas deux méthodes nous intéresse

public abstract Transformer
<http://www.docjar.com/docs/api/javax/xml/transform/Transformer.html>
*newTransformer*(Source
<http://www.docjar.com/docs/api/javax/xml/transform/Source.html>
source)
                                     throws
TransformerConfigurationException
<http://www.docjar.com/docs/api/javax/xml/transform/TransformerConfiguration
Exception.html>
Creates a new transformer using the specified stylesheet.

public abstract Transformer
<http://www.docjar.com/docs/api/javax/xml/transform/Transformer.html>
*newTransformer*()
                                     throws
TransformerConfigurationException
<http://www.docjar.com/docs/api/javax/xml/transform/TransformerConfiguration
Exception.html>

Creates a new transformer that applies the identity transform.

Si j'avais voulus tranformer le xml j'aurai utilisé le
newTransformer(Source
source) qui prend en paramètre le xsl.
Pour l'exemple, j'ai utilisé l'autre qui n'a pas de paramètre et qui
effectue une "identity tranform" (je ne suis pas sur pour la traduction je
laisse en anglais !) donc le xml reste pareil.
Voila fin de la parenthèse, j'espère que ça a répondu à la question
"comment
marche le Transformer".

Pour l'objet out, il s'agit d'un StringWriter donc ça se comporte comme un
objet Writer, c'est à dire qu'on peut y écrire un flux de caractères.
Sauf
que cet Objet n'écrit pas dans un fichier mais dans un String.
"Comment à t'il été modifié" : il a été modifié par la fonction
transform de
l'objet Transformer.

Enfin en tout cas ca marche!
> Merci encore!
> Sophie

De rien, surtout si tu as d'autres question n'hésite pas !
Regarde bien les javadoc de chacun des objets que j'ai mis dans l'exemple
car les possibilités sont grandes (tu peux utiliser des inputStream si tu
veux par exemple).

J'espère que tu as tout compris et que je n'ai pas dit de bêtise ! (pas de
panique, si c'est le cas d'autres feront les corrections ;-)
A+

--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de 
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant 
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
__________ NOD32 1.1547 (20060518) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de 
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant 
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Fri May 19 10:19:59 2006

Archive générée par hypermail 2.1.8 le 31/05/2006 - 08:42 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement