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

Servlets/JSP Java Discussion :

[XML]JSP et XML DOM


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut [XML]JSP et XML DOM
    Salut,


    j'ai le code JSP suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DocumentBuilderFactory BuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder MonBuilder = BuilderFactory.newDocumentBuilder(); 
    Document MonDocument = MonBuilder.parse(g_streamXML); 
     
    // String g_streamXML = "<?xml version='1.0' encoding='ISO-8859-1'?> 
    <FLUX Version='5.0'></FLUX>
    ";
    et j'obtiens l'erreur suivante:
    java.net.MalformedURLException: no protocol:

    D'ou cela peut il venir?

    Merci car je suis perdu


    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut Re: [XML]JSP et XML DOM
    Citation Envoyé par lenoil
    et j'obtiens l'erreur suivante:
    java.net.MalformedURLException: no protocol:

    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java
    no protocol : ???
    Quel est le protocole qu'il te refuse ?
    C'est peut-être un problème de syntaxe.

  3. #3
    Membre habitué Avatar de phoebe
    Inscrit en
    Août 2003
    Messages
    289
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 289
    Points : 143
    Points
    143
    Par défaut
    à priori ton code est court mais je n'ycomprend rien, utilise les balises de code

    réédite ton message et on reviendra voir

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    Voici donc le petit bout de code qui ne fonctionne pas
    Je veux essauyer de charger un document XML à partir d'une string et non pas à partir d'un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String g_streamXML = "<?xml version='1.0' encoding='ISO-8859-1'?> 
    <FLUX Version='5.0'></FLUX> 
    "; 
     
    DocumentBuilderFactory BuilderFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder MonBuilder = BuilderFactory.newDocumentBuilder(); 
    Document MonDocument = MonBuilder.parse(g_streamXML);
    et j'obtiens l'erreur suivante:
    java.net.MalformedURLException: no protocol:

    En espérant avoir été plus clair

  5. #5
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par lenoil
    Je veux essayer de charger un document XML à partir d'une string et non pas à partir d'un fichier.
    C'est sans doute de là que viens le problème puisque si tu passes un string à la méthode parse, ce String doit être l'URI d'un document XML.

    http://java.sun.com/j2se/1.4.2/docs/...a.lang.String)

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    L'URI c'est quoi exactement?

    As tu un exemple?

    Merci

  7. #7
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    Dixit la Javadoc :

    Parameters:
    uri - The location of the content to be parsed.
    Tu mets un truc du genre C:\doc.xml est ça devrait aller (si ce document existe bien évidemment).

    Mais l'URI n'est pas toujours une référence comme ça mais c'est un autre sujet...

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    ben justement j'ai pas de fichiers ...

    mais un flux xml que je récupère et que je veux charger ....

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai pas la solution complète mais une partie :

    La méthode parse peut prende en paramètre un objet InputStream. Il faut donc que tu transforme ton String en InputStream.

    Tu peut déjà créer un Reader à l'aide de ton String grace à la classe StringReader. Ensuite, tu peut normallement transformer ton Reader en InputStream mais la je ne sais plus comment on fait.

    Sinon, il existe la classe StringBufferInputStream qui permet de construire directement un InputStream à partir d'un String mais je viens de vois qu'elle était depracated.

  10. #10
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    Si j'ai bien compris tu as des String et ce sont ces String qui composent le document XML?

    Si c'est le cas, tu copies tout ca dans un fichier avec une extension xml et ensuite tu travailles avec ce fichier.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Points : 107
    Points
    107
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Permet de créer une InputSource
    StringWriter writer = new StringWriter();
    writer.write(g_streamXML);            
    StringReader xmlStringReader = new StringReader(writer.getBuffer().toString());
    InputSource xmlSource = new InputSource(xmlStringReader);
     
    //Création du document DOM
    DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    DOMParser parser = new DOMParser();
    parser.parse(xmlSource);
    Document monDocument = parser.getDocument();
    xmlStringReader.close();
    writer.close();

  12. #12
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    le probleme, c'est que les methodes de parses avec une string en parametre s'attendent à recevoir, dans la string, un chemin d'acces à un fichier XML. il faut envoyé une Stream pour envoyé un flux.
    Enfin je pense. en Sax c'est sur, en DOM, je crois... à vérifier quand même, mais ton probleme peut venir de là.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Je pense que la solution de tout copier dans un fichier puis de lire ce fichier est pas top question perf. Par contre, le solution de ptitjack me parrait pas mal même si je pense qu'on pourrait faire un truc plus simple (c'est seulement une idée, j'ai pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Permet de créer une InputSource 
    StringReader xmlStringReader = new StringReader(g_streamXML); 
    InputSource xmlSource = new InputSource(xmlStringReader); 
     
    //Création du document DOM 
    DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
    DOMParser parser = new DOMParser(); 
    parser.parse(xmlSource); 
    Document monDocument = parser.getDocument(); 
    xmlStringReader.close(); 
    writer.close();
    En faite, dans ta solution ptitjack, je ne vois pas pourquoi tu passe par un StringWriter vu que le constructuer de StringReader prend un String en entrée.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par jothi35
    En faite, dans ta solution ptitjack, je ne vois pas pourquoi tu passe par un StringWriter vu que le constructuer de StringReader prend un String en entrée
    C'est une excellente question... En fait, j'ai copié sans faire attention un bout code en cours de dev... Et j'utilise le StringWriter pour générer du code xml sur la base d'une structure en arbre d'objets que j'ai développés. Plutôt que d'utiliser un objet String et à chaque fois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maString += monCodeXmlPourMonObjet;
    j'ai préféré utiliser un StringWriter... Mais bon, j'aurais pu utiliser de la même manière un StringBuffer ou autre...

    Je me demande si j'chuis compréhensible là

    @+

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Points : 107
    Points
    107
    Par défaut
    Pour être plus clair :

    J'ai une structure d'objets en arbre, un peu comme DOM et chaque objets implémente une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void toXml(StringWriter writer) {
      //Utilise la référence de mon writer pour y écrire le contenu de mon objet
      //sous format xml
    }
    Et mon objet appelle la même méthode pour ses fils... -> Génère l'ensemble de mon code XML...


    Est-ce plus clair là : : :

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    ou c'est clair, par contre, dans le cas de lenoil, je pense que la solution que je propose est suffisant puisqu'il a une chaine en entrée. A moins qu'il ait la même problématique que toi de transformation d'un arbre d'objets en DOM.

  17. #17
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    Merci à tous

    et voilà ma solution qui à l'air de fonctionner
    g_streamXML étant ma string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InputStream in = new ByteArrayInputStream(g_streamXML.getBytes());
    Document DocumentGGTMD = BuilderGGTMD.parse(in);
    [/code]

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Points : 107
    Points
    107
    Par défaut
    C'est bien ...

    Juste, on ose te demander de cliquer sur le lien résolu :

    Merci et @+

  19. #19
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    Hé ben voilà c'est fait

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

Discussions similaires

  1. [plugin][XMLBuddy]comment ourvrir un jsp avec xml buddy
    Par dietrich dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/02/2006, 17h08
  2. [DOM] Erreur lors du parsing d'un fichier XML par l'API DOM
    Par patricetoan dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/09/2005, 13h43
  3. [JSP] Parsing XML avec JDOM
    Par benben13 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 26/08/2005, 18h19
  4. [XML-JSP] Editer un fichier XML
    Par sempire dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 24/08/2005, 23h24
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 10h53

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