IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

message d'erreur sous eclipse avec jdom


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut message d'erreur sous eclipse avec jdom
    Bonjour,

    est-ce-que quelqu'un peut me dire ce que c'est ces messages d'erreur svp?

    Merci d'avance

    java.io.FileNotFoundException: D:\workspace\testtest\test1.xml (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sun.net.http://www.protocol.file.FileURLConn...onnect(Unknown Source)
    at sun.net.http://www.protocol.file.FileURLConn...Stream(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:847)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:826)
    at testtest.main(testtest.java:15)

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    As-tu vérifié que ton fichier source xml est bien présent à l'emplacement indiqué ? (D:\workspace\testtest\test1.xml)

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    merci, quel c.... que je suis!

    mais je ne comprends pas pourquoi il ne m'enleve pas cet element "script", malgre que je n'ai pas de message d'erreur.

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    import java.io.File;
    	import java.io.IOException;
     
    	import org.jdom.Document;
    	import org.jdom.Element;
    	import org.jdom.JDOMException;
    	import org.jdom.input.SAXBuilder;
     
    	public class testtest extends TestJDOM{
    	  public static void main(String[] args) {
    	    try {
    	      SAXBuilder builder = new SAXBuilder();
    	      Document document = builder.build(new File("test1.xml"));
     
    	      Element courant = (Element) document.getRootElement().getChildren().get(1);
     
    	      // Ajouter un nouvel élément
     
    	     // livre2.addContent(new Element("publication").setText("1996"));
    	      // Supprimer tous les noeuds nommé editeur
     
    	      courant.removeChildren("script");
     
    	      afficher(document);
    	    } catch(JDOMException e) {
    	      e.printStackTrace();
    	    } catch (IOException e) {
    	      e.printStackTrace();
    	    }   
    	  }     
    	}
    et voici mon fichier xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <ExportedConcepts xmlns:xsi="http://www.xx.org/xxxx/XMLSchema-instance" xsi:noNamespaceS
     
     <FinancialConceptInfo name="CANCELLABLESWAP_A" type="Deal">
     
        <Concept>
     
          <![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <FinancialConcepts xmlns="" xmlns:xsi="http://www.xx.org/xxxx/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FinancialConcept.xsd">
     
      <FinancialConcept father="SINGLESWAP_A" fatherVersion="2" isReadOnly="false" name="CANCELLABLESWAP_A" type="Deal" version="2">
        <Comment>
     
          @![CDATA[Cancellable Swap allows to pay a fixed rate and receive a floating rate (and vice-versa), the terms and conditions allow to cancel (call) the deal at predefined dates (usually matching with coupon payments date)
     
    Structured Leg supporting:
    - Upfront fee
    - Fixed/CMS/Libor rate
    - Spread of Libor/Spread of CMS
    - Cap & Floor
    - Inverse floater ( M% - rate )
     
     Funding Leg supporting:
    - Upfront fee
    - Fixed/CMS/Libor rate
    - Cap & Floor
     
    Options dates supporting:
    - Generation from schedule or funding leg
     
    Upfront Solver to compute upfront fee
    Step-up/down of rate manageable in the schedules]]@
        </Comment>
        <Script>
    blablabla
        </Script>
      </FinancialConcept>
     
    </FinancialConcepts>
    ]]>
        </Concept>
      </FinancialConceptInfo>
     
    </ExportedConcepts>

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Heu Quel rapport ? excuse moi je n'ai pas compris...

    >>> pourquoi nous montrer ce morceau de code ?
    >>> de quel élément script parles-tu ?
    >>> as-tu lu ma réponse ?
    >>> quel est le problème au final ?

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Parce que le noeud script n'est pas accessible.
    Ce document xml, en encapsule un second dans son noeud concept (via les balises <![CDATA[ ), c'est une très mauvaise idée de faire ce genre de chose.
    Du coup, s'il n'est pas possible de modifier ce document en entrée, il faudrait re-"parser" le document contenu dans le noeud concept.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    excuse moi morbo mais comment je dois proceder pour reparser ce document et est-ce-que avec jdom c'est possible?

    comment aussi je dois faire apres pour recuperer le nouveau xml?

    mes questions sont surement nulles mais c'est pour un vrai novice.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Pff, du coup le text contenu dans cdata n'est même pas bien formé, donc impossible à parser en xml......
    Il faut utiliser des entités pour les &, et on ne peut pas encapsuler les bloc CDATA.

    Bref, il te manque bcp de notion de savoir ce qui est permis ou non dans le xml avant de le manipuler.

    Néamoins si tu le corriges le xml source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <ExportedConcepts>
     
     <FinancialConceptInfo name="CANCELLABLESWAP_A" type="Deal">
     
        <Concept>
     
          <![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <FinancialConcepts >
     
      <FinancialConcept father="SINGLESWAP_A" fatherVersion="2" isReadOnly="false" name="CANCELLABLESWAP_A" type="Deal" version="2">
        <Comment>
     
          Cancellable Swap allows to pay a fixed rate and receive a floating rate (and vice-versa), the terms and conditions allow to cancel (call) the deal at predefined dates (usually matching with coupon payments date)
     
    Structured Leg supporting:
    - Upfront fee
    - Fixed/CMS/Libor rate
    - Spread of Libor/Spread of CMS
    - Cap &amp; Floor
    - Inverse floater ( M% - rate )
     
     Funding Leg supporting:
    - Upfront fee
    - Fixed/CMS/Libor rate
    - Cap &amp; Floor
     
    Options dates supporting:
    - Generation from schedule or funding leg
     
    Upfront Solver to compute upfront fee
    Step-up/down of rate manageable in the schedules]]@
        </Comment>
        <Script>
    blablabla
        </Script>
      </FinancialConcept>
     
    </FinancialConcepts>
    ]]>
        </Concept>
      </FinancialConceptInfo>
     
    </ExportedConcepts>
    , ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    try {
      SAXBuilder builder = new SAXBuilder();
      Document document = builder.build(new File("NewFile.xml"));
     
      Element conceptNode = (Element) document.getRootElement().getChild("FinancialConceptInfo").getChild("Concept");
     
      String innerXml = conceptNode.getText().trim();
      InputSource innerSource = new InputSource(new StringReader(innerXml)); 
      Document innerDocument = builder.build(innerSource);
     
      Element scriptNode = innerDocument.getRootElement().getChild("FinancialConcept").getChild("Script");
      System.out.println("Script :\n"+scriptNode.getText());
     
     
    } catch(JDOMException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    Merci Morbo, j'ai reussi a parser mon fichier xml en plusieurs xml.

    neanmoins j'ai le probleme que tu as deja remarque concernant ce qui se trouve dans le contenu de la balise <comment> le fameux "&"; ce qui m'emmene a te poser la question, est-ce-qu'il est possible de remplacer un caractere dans un contenu lors de sa lecture?
    dans notre cas & par &amp;

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Oui, un simple replaceAll sur la String (innerXml) contenant le document xml (enfin pseudo, il est mal formé).
    Mais si tu commences à travailler sur des documents mal formés, t'as pas fini, c'est impossible de prévoir toutes les erreurs possibles, encore moins de les corriger à la volée.
    En plus, le '&' peut être tout a fait justifié, lorsqu'il désigne une entité xml.

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    voici le fichier que j'ai reussi a obtenir en parsant le gros fichier que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <FinancialConcepts xmlns="" xmlns:xsi="http://www.xx.org/xxxx/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FinancialConcept.xsd">
    <FinancialConcept father="SINGLESWAP_A" fatherVersion="2" isReadOnly="false" name="CANCELLABLESWAP_A" type="Deal" version="2">
    <Comment>@![CDATA[Cancellable Swap allows to pay a fixed rate and receive a floating rate (and vice-versa), the terms and conditions allow to cancel (call) the deal at predefined dates (usually matching with coupon payments date)Structured Leg supporting:- Upfront fee- Fixed/CMS/Libor rate- Spread of Libor/Spread of CMS- Cap &amp; Floor- Inverse floater ( M% - rate )Funding Leg supporting:- Upfront fee- Fixed/CMS/Libor rate- Cap &amp; FloorOptions dates supporting:- Generation from schedule or funding legUpfront Solver to compute upfront feeStep-up/down of rate manageable in the schedules]]@
    </Comment>
    <Script>
    blablabla
    </Script>
    </FinancialConcept>
    </FinancialConcepts>
    Tu peux m'expliquer pourquoi je n'arrive pas a enlever tout l'element script?Voici les messages d'erreurs :

    org.jdom.input.JDOMParseException: Error on line -1: Premature end of file.
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:504)
    at testtest.main(testtest.java:23)
    Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    ... 1 more
    Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    at testtest.main(testtest.java:23)
    Caused by: org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    at testtest.main(testtest.java:23)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    	import java.io.File;
    	import java.io.IOException;
    	import java.io.StringReader;
    	import org.jdom.Document;
    	import org.jdom.Element;
    	import org.jdom.JDOMException;
    	import org.jdom.input.SAXBuilder;
    	import org.xml.sax.InputSource;
     
     
    	public class testtest extends TestJDOM{
    	  public static void main(String[] args) {
    		  try {
    			  SAXBuilder builder = new SAXBuilder();
    			  Document document = builder.build(new File("fileName001.xml"));
     
    			  Element conceptNode = (Element) document.getRootElement().getChild("FinancialConcept");
     
    			  String innerXml = conceptNode.getText().trim();
    			  InputSource innerSource = new InputSource(new StringReader(innerXml)); 
    			  Document innerDocument = builder.build(innerSource);
     
    			  innerDocument.getRootElement().removeChildren("script");
    			  Element scriptNode = innerDocument.getRootElement().getChild("FinancialConcept").getChild("Script");
    			  System.out.println("Script :\n"+scriptNode.getText());
     
     
     
    			} catch(JDOMException e) {
    			  e.printStackTrace();
    			} catch (IOException e) {
    			  e.printStackTrace();
    			}
    	  }     
    	}

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    Aussi, je voudrais savoir si il etait possible lorsqu'on parse un gros fichier xml, en plusieurs de faire en sorte que les fichiers xml soient correct?

    Merci

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ce n'est pas au parser de rendre le fichier xml correcte, il faut voir avec l'applicatif qui le génère.
    L'exception que tu as viens du fait que tu essaie de parser un flux xml vide, ou peut être parce qu'il y a des caractère avant l'entête <?xml ce qui est interdit.

    Le code que je t'ai précédemment donné, faisait 2 parsing car ton document xml en encapsulait un autre.
    Ce n'est plus le cas dans le xml que tu me montres (pas de balise cdata).

  13. #13
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Points : 60
    Points
    60
    Par défaut
    Merci Morbo,

    j'ai essaye de le faire avec mon ancien xml, et cela marche

    par contre je n'arrive toujours pas a supprimer <script>blablabla</script> du fichier.

    en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conceptNode.removeChildren("script");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scriptNode.removeChildren("script");

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ces méthode supprime le noeud en mémoire, si tu n'écris/serialise pas le document, tu ne verras donc jamais les éventuelles modification que le programme à fait en mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de démarrage Tomcat 7 sous Eclipse avec STS
    Par assemism dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 30/04/2012, 09h07
  2. Réponses: 11
    Dernier message: 24/02/2010, 15h07
  3. Réponses: 0
    Dernier message: 06/08/2009, 13h13
  4. Erreur Http 500 sous eclipse avec aPI servlet
    Par RouRa22 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 21/04/2009, 17h25
  5. Erreur sous eclipse avec Scanner
    Par bugland dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/01/2007, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo