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

AWT/Swing Java Discussion :

Affichage d'un DOM perso avec Flying Saucer


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut Affichage d'un DOM perso avec Flying Saucer
    Bonjour,

    J'ai un problème avec le Flying Saucer pour afficher, via la méthode xhtmlPanel.setDocument(Document dom) un document DOM (variable dores) créé "à la main" à partir d'un Document en entrée (variable document)
    Je n'ai aucune exception générée, mais j'ai l'impression que le programme ne se termine pas: son exécution dans Netbeans laisse le thread run en activité.
    Le message build successful dans l'IDE n'apparait que si on arrête l'application.

    Voici le code de création de mon DOM:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
        public void testXPath2(Document document) {
            try {
            Text text = null;
            String req = null;
            String req2 = null;
            dores = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
            dores.setXmlVersion("1.0");
            Element racine = dores.createElementNS("http://www.w3.org/1999/xhtml", "html");
     
            Element head = dores.createElement("head");
            Element body = dores.createElement("body");
            racine.appendChild(head);
     
            XPath xpa = XPathFactory.newInstance().newXPath();
     
            NamespaceContext namespace = new NamespaceContext() {
     
                    public String getNamespaceURI(String prefix) {
                        if (prefix.equals(XMLConstants.DEFAULT_NS_PREFIX)) {
                            return "http://www.w3.org/1999/xhtml";
                        } else {
                            return XMLConstants.NULL_NS_URI;
                        }
                    }
     
                    public String getPrefix(String namespaceURI) {
                        return null;
                    }
     
                    public Iterator getPrefixes(String namespaceURI) {
                        return null;
                    }
                };
            xpa.setNamespaceContext(namespace);
            NodeList nodeList = (NodeList) xpa.evaluate("//:table[@class='simple']", document, XPathConstants.NODESET);
            int length = nodeList.getLength();
            Element noeudCourant = null;
            for (int i = 0; i < length; i++) {
                System.out.println("i: " + i);
                noeudCourant = (Element) nodeList.item(i);
                System.out.println("element " + i + ": " + noeudCourant.getNodeName() + " " + noeudCourant.getFirstChild().getNodeValue());
                Element table = dores.createElement(noeudCourant.getNodeName());
                req = "./:tr";
                NodeList nodeListRow = (NodeList) xpa.evaluate(req, noeudCourant, XPathConstants.NODESET);
                int lengthRow = nodeListRow.getLength();
                for (int j = 1; j < lengthRow; j++) {
                    System.out.println("j: " + j);
                    noeudCourant = (Element) nodeListRow.item(j);
                    System.out.println("element " + j + ": " + noeudCourant.getNodeName() + " " + noeudCourant.getFirstChild().getNodeValue());
                    Element ligne = dores.createElement(noeudCourant.getNodeName());
                    req2 = "./:td";
                    NodeList nodeListCell = (NodeList) xpa.evaluate(req2, noeudCourant, XPathConstants.NODESET);
                    int lengthCell = nodeListCell.getLength();
                    for (int k = 0; k < lengthCell; k++) {
                        System.out.println("k: " + k);
                        noeudCourant = (Element) nodeListCell.item(k);
                        Element cellule = dores.createElement(noeudCourant.getNodeName());
                        if (!(noeudCourant.hasChildNodes())) {
                            text = dores.createTextNode("");
                        } else {
                            text = dores.createTextNode(noeudCourant.getFirstChild().getTextContent());
                        }
                        System.out.println("text: " + text.getNodeValue());
                        cellule.appendChild(text);
                        ligne.appendChild(cellule);
                    }
                    table.appendChild(ligne);
                }
                body.appendChild(table);
            }
            racine.appendChild(body);
            dores.appendChild(racine);
    	panel.setDocument(dores);
            } catch (ParserConfigurationException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            } catch (XPathExpressionException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


    Je précise que le composant XHTMLPanel est déjà affiché, puisque je génère mon DOM après click sur un bouton (mon IHM a un bouton et le composant XHTMLPanel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
            Reader reader = getReader(TEST_URI);
            XMLResource xmlr = XMLResource.load(reader);
            Document doc = xmlr.getDocument();
    	testXPath2(doc);
     
        }
    Je tourne en rond, je ne vois pas d'où peut venir le problème...
    Je pensais l'avoir résolu en créant l'élément html avec le bon namespace, mais ça ne suffit pas.
    Merci de votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Pas d'idée d'où peut venir le problème ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/05/2012, 14h26
  2. Impression pdf avec Flying Saucer
    Par gatlin dans le forum JSF
    Réponses: 0
    Dernier message: 22/11/2010, 17h57
  3. Réponses: 13
    Dernier message: 22/05/2010, 04h09
  4. Affichage du "logo perso" avec la Version 1.0
    Par Zébulon-21 dans le forum IGN API Géoportail
    Réponses: 12
    Dernier message: 14/05/2010, 01h22
  5. Erreur Eclipse avec Flying Saucer
    Par buzz! dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 26/11/2007, 17h30

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