parsing xml, est ce une bonne solution ? (design)

parsing xml, est ce une bonne solution ? (design) - Java - Programmation

Marsh Posté le 26-10-2005 à 17:04:21    

:hello: ,
fichier XML

Code :
  1. <presentationClientLog>
  2. <date>...</date>
  3. <connection>
  4.                 <system>asda</system>
  5.                 ect
  6.  <.. ..>
  7. </connection>
  8. <ispecReceived>
  9.  <ispecModelName>MENU</ispecModelName>
  10.  <cursorFieldName>ACTION</cursorFieldName>
  11.  <ispecFields>
  12.   <... .. >
  13.  </ispecFields>
  14. </ispecReceived>
  15. <ispecSent>
  16.  <ispecModelName>MENU</ispecModelName>
  17.  <cursorFieldName>ACTION</cursorFieldName>
  18.  <ispecFields>
  19.   <.. ..>
  20.  </ispecFields>
  21. </ispecSent>
  22. </presentationClientLog>


 
J aimerai parser el fichier recuperer quasiment tous les fields, mettre ca entant d'attributs dobject  
( exemple ObjTest = 1 objet connection (attribut x, x1, x2) + 1 Array list of ispecSent +  1 Array list of ispecReceived.
 
Pour ensuite reutilier les donnes (simulation de load) pour chronometrer les transactions dun serveur.
 
J utilise JDOM pour construre larbre en memoire et ensuite if /if else pour reconaitre les nom delement qui minteresse.
 

Code :
  1. public static void parseXML()
  2. {
  3.  String caseFile = "log.xml";
  4.  SAXBuilder builder = new SAXBuilder();
  5.    
  6.     // command line should offer URIs or file names
  7.     try {
  8.       Document document = builder.build(caseFile);
  9.       System.out.println(caseFile + " Loaded." );
  10.       listNodes(document);     
  11.     }
  12.     // indicates a well-formedness error
  13.     catch (JDOMException e) {
  14.       System.out.println(caseFile + "XML document not well-formed." );
  15.       System.out.println(e.getMessage());
  16.     } 
  17.     catch (IOException e) {
  18.       System.out.println("Could not check " + caseFile);
  19.       System.out.println(" because " + e.getMessage());
  20.     } 
  21.  
  22. }
  23.   public static void listNodes(Object o) {
  24.    
  25.      if (o instanceof Element) {
  26.        Element element = (Element) o;
  27.        System.out.println("Element: " + element.getName());
  28.        List children = element.getContent();
  29.        Iterator iterator = children.iterator();
  30.        while (iterator.hasNext()) {
  31.          Object child = iterator.next();
  32.          listNodes(child);
  33.        }
  34.      }
  35.      else if (o instanceof Document) {
  36.        System.out.println("Document" );
  37.        Document doc = (Document) o;
  38.        List children = doc.getContent();
  39.        Iterator iterator = children.iterator();
  40.        while (iterator.hasNext()) {
  41.          Object child = iterator.next();
  42.          listNodes(child);
  43.        }
  44.      }
  45.      else if (o instanceof Comment) {
  46.        System.out.println("Comment" );
  47.      }
  48.      else if (o instanceof CDATA) {
  49.        System.out.println("CDATA section" );
  50.        // CDATA is a subclass of Text so this test must come
  51.        // before the test for Text.
  52.      }
  53.      else if (o instanceof Text) {
  54.        System.out.println("Text" );
  55.      }
  56.      else if (o instanceof EntityRef) {
  57.        System.out.println("Entity reference" );
  58.      }
  59.      else if (o instanceof ProcessingInstruction) {
  60.        System.out.println("Processing Instruction" );
  61.      }
  62.      else// This really shouldn't happen
  63.        System.out.println("Unexpected type: " + o.getClass());
  64.      }
  65.    
  66.    }


 
 
si je fais des test dans la fonction list genre

Code :
  1. if (element.getName().isEqual("system" ))
  2.      connectionObj.setSystem = element.valeur;


 
ou encore dans le cas danstag qui se repetera  

Code :
  1. <ispecReceived>....</ispecReceived>
  2. <ispecSent>....</ispecSent>
  3. <ispecReceived>....</ispecReceived>
  4. <ispecSent>....</ispecSent>
  5. <ispecReceived>....</ispecReceived>
  6. <ispecSent>....</ispecSent>


 

Code :
  1. if (element.getName().isEqual("ispecReceived" ))
  2.     ajoute opjet ispecReceived + tous ses fields a ArrayList ArrayispecReceived ?;


 
voila, est ce que cest potable comme methode ?

Reply

Marsh Posté le 26-10-2005 à 17:04:21   

Reply

Marsh Posté le 26-10-2005 à 17:38:57    

jai vu des outils comme jakarta digestest, mais cest ptet un peu gros pour mon truc.

Reply

Marsh Posté le 26-10-2005 à 17:51:25    

xstream


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-10-2005 à 20:50:15    


+1, simple et efficasse, je m'en sers pour mes MDB

Reply

Sujets relatifs:

Leave a Replay

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