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

Format d'échange (XML, JSON...) Java Discussion :

[Xerces] Accéder au PSVI avec DOM [DOM]


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut [Xerces] Accéder au PSVI avec DOM
    Bonjour,

    je parse un fichier XML avec DOM en le validant par rapport à un Schéma. Je n'ai aucun problème pour la validation, mais j'aimerais accéder aux information de post-validation (PSVI).

    J'ai copié depuis l'exemple de la documentation Xerces:
    Use the http://apache.org/xml/properties/dom...ent-class-name property to set org.apache.xerces.dom.PSVIDocumentImpl as the implementation of the org.w3c.dom.Document interface. In the resulting DOM tree, you may cast org.w3c.dom.Element to the org.apache.xerces.xs.ElementPSVI and org.w3c.dom.Attr to the org.apache.xerces.xs.AttributePSVI.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Document document = parser.getDocument();
    Element root = document.getDocumentElement();
    // obtenir le PSVI de l'élément racine
    ElementPSVI rootPSVI = (ElementPSVI)root;
    // obtenir le schéma utilisé pour valider ce document
    XSModel schema = rootPSVI.getSchemaInformation();
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    parser.setFeature("http://xml.org/sax/features/validation", true);
    parser.setFeature("http://apache.org/xml/features/validation/schema", true);
    parser.setFeature("http://xml.org/sax/features/namespaces",true) ;
    parser.setProperty("http://apache.org/xml/properties/dom/document-class-name","org.apache.xerces.dom.PSVIDocumentImpl");
    parser.parse(file.toURI().toString());
    Document doc = parser.getDocument();
    ElementPSVI rootPSVI = (ElementPSVI)doc.getDocumentElement();
    XSModel schema = rootPSVI.getSchemaInformation();
    Apres ce code, schema est toujours null. Dans le débugger, je vois que tous les champs concernant le PSVI sont null. Pourtant, la validation a bel et bien lieu, les erreurs en cas d'instance invalide le prouvent.

    Quelqu'un a-t-il déjà utilisé le PSVI avec Xerces et DOM ?
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    a priori il s'agit d'un problème de précédence d'opérateurs. Ton cast s'effectue sur ta variable doc et non pas sur la variable de type org.w3c.dom.Element retournée par doc.getDocumentElement(). Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElementPSVI rootPSVI = (ElementPSVI)(doc.getDocumentElement());
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Aucun changement. En fait j'avais copié le code de mémoire, et j'avais déjà écrit la ligne comme ca.

    Toujours pas de solution en vue, je me demande si je ne vais pas devoir passer par DOM3, ou l'arbre contient une partie des infos du PSVI.

    Je préfèrerais éviter, si possible...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Bon...

    Si je mets les jar de Xerces tout au début du classpath, ca marche.
    Je ne sais pas ou il pouvait bien trouver ces classes avant, mais le problème est résolu.

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

Discussions similaires

  1. Accéder aux éléments du Dom d'une page inclue avec une balise object
    Par Aloneghost dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 02/04/2011, 21h06
  2. [XML] Générer DTD avec DOM ou Xerces.
    Par El_touristo dans le forum Valider
    Réponses: 1
    Dernier message: 02/03/2006, 21h39
  3. [DOM] Problème de lecture avec DOM
    Par samios dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 29/09/2004, 15h58
  4. [DOM] Accès au contenu textuel d'un noeud avec DOM
    Par comexe2 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/07/2004, 15h41
  5. [DOM] Comment lire de l'HTML avec DOM ?
    Par djodjo dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/04/2004, 15h37

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