JAVA XML

JAVA XML - Java - Programmation

Marsh Posté le 14-02-2008 à 14:33:04    

bonjour,
je dois construire une expression ( un bout de code) xpath en fonction du nom passé en paramètre.
voici le code :  
le travail demandé est ce qui est marqué en bas en commentaire.

Code :
  1. public static boolean SignOne(String nom, String cert, String pKey, String inFile) throws Exception {   
  2.     Tools t = new Tools();
  3.   
  4.     System.out.println("Nom de l'enseignant: " + nom);
  5.   
  6.     Document doc = t.getInputDocument(inFile);
  7.     Element root = doc.getDocumentElement();
  8.  
  9.     Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
  10.     NodeList signatureElems = XPathAPI.selectNodeList(doc, "//ds:Signature", nscontext);
  11.     for (int i = 0; i < signatureElems.getLength(); i++) {
  12.      Element sigElement = (Element) signatureElems.item(i);
  13.      System.out.println("Signature trouvée pour M. "+sigElement.getAttribute("Id" ));
  14.      String id = sigElement.getAttribute("Id" ) ;
  15.      if(id.equals(nom)){
  16. //COMMENTAIRE: S'il y a une signature à ce nom, on sort de la fonction...
  17.       System.out.println("Document déja signé par M."+nom);
  18.       return true;
  19.      }
  20.     }
  21.   
  22. /*COMMENTAIRE: Construction de mon expression XPath me permettant de séléctionner tous les enseignements d'une personne
  23. * */
  24.       String xp = "not(ancestor-or-self::ds:Signature)" + "\n" + " and (" + "\n"
  25.      //$$$
  26. + " (ancestor-or-self::node() = //default:enseignement[@nom='Security']) " + "\n"
  27. + " or (ancestor-or-self::node() = //default:enseignement[@nom='Anglais']) " + "\n"
  28. //$$$
  29.        + " )";
  30. /*TODO:
  31. * Rendre cela dynamique, je cronstruis mon expression xpath en fonction du nom passé en paramètre.
  32. * En gros vous devez remplacer les lignes entre "//$$$"...
  33. * Tester au passage que si l'enseignant n'a pas d'enseignements, on sort de la fonction "SignOne"
  34. * plutôt que de créer une signature vide...


 
voilà ce que j'ai changé
 

Code :
  1. public static boolean SignOne(String nom, String cert, String pKey, String inFile) throws Exception {   
  2.     Tools t = new Tools();
  3.   
  4.     System.out.println("Nom de l'enseignant: " + nom);
  5.   
  6.     Document doc = t.getInputDocument(inFile);
  7.     Element root = doc.getDocumentElement();
  8.   
  9.   
  10.  
  11.     Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
  12.     NodeList signatureElems = XPathAPI.selectNodeList(doc, "//ds:Signature", nscontext);
  13.     for (int i = 0; i < signatureElems.getLength(); i++) {
  14.      Element sigElement = (Element) signatureElems.item(i);
  15.      System.out.println("Signature trouvée pour M. "+sigElement.getAttribute("Id" ));
  16.      String id = sigElement.getAttribute("Id" ) ;
  17.      if(id.equals(nom)){
  18.       System.out.println("Document déja signé par M."+nom);
  19.       return true;
  20.      }
  21.     }
  22.   
  23.       String xp = "not(ancestor-or-self::ds:Signature)" + "\n"
  24.        + " and (" + "\n" + " )";
  25.       NodeList elements = doc.getElementsByTagName("enseignant" );
  26.    Element elementEn;
  27.        for (int i = 0; i < elements.getLength(); i++) {
  28.         elementEn = (Element)elements.item(i);
  29.         //System.out.println("Enseignant:" +elementEn.getAttribute("nom" ));
  30.       if((elementEn.getAttribute("nom" )).equals("Banks" )){
  31.        Node node = (Node)elementEn.getParentNode();
  32.        System.out.println("Enseignement:" +node.getAttributes()); 
  33.       }
  34.       else {
  35.      
  36.        System.out.println("Veuillez sortir de l'application" );
  37.       }
  38.        }


 
il ya des erreurs dans le code mais je ne vois pas lesquelles si qqn peut m'aider svp
merci d'avance

Reply

Marsh Posté le 14-02-2008 à 14:33:04   

Reply

Marsh Posté le 14-02-2008 à 17:37:54    

tu n'a pas utilisé xpath comme demander dans l'énoncé !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed