Avatar billede Omega-D Nybegynder
20. november 2013 - 11:27 Der er 7 kommentarer og
1 løsning

Java - brug af XML data

Hej,

Hvordan trækker jeg på en hensigtsmæssig måde data ud af en xml fil i Java?

Jeg har allerede lavet en metode via xpath til at trække oplysningerne ud. Denne trækker alle oplysninger ud og placrer dem i et objekt resultAktier jf. nedenfor.

Næste step er at hente henholdsvis alle salg og alle køb (fordelt pr. aktie) fra resultAktier på en generisk måde. Hvordan gør jeg bedst dette?? (med generisk mener jeg at metoden til hentning af data, hvis muligt, skal kunne anvendes på både xml og csv filer eller fra en brugerflade)

Skal jeg placere alle data i et array og arbejde videre på dem derfra eller er det helt forkert? Endvidere skal alle køb styres i et queue-objekt for at sikre overholdelse af FIFO.

Håber nogen kan hjælpe lidt med denne:-)

private static void getNodeNameAndValue(Document doc, XPath hentData){

      //XPath Query 
      XPathExpression aktierFraXML;
       
      Object resultAktier = null;
       
      try {
           
          //Returns characters with the profession Student
          aktierFraXML = hentData.compile("//Papirer/*//text()");

          //Returns the result of the query
          resultAktier = aktierFraXML.evaluate(doc, XPathConstants.NODESET);
        } 
        catch (XPathExpressionException e) {
            e.printStackTrace();
        }
       
        //Outputs the results of the query
        NodeList aktieListe = (NodeList) resultAktier;

        //Cycles through the results
        for (int i = 0; i < aktieListe.getLength(); i++) {

            //Print the matching node name and value
            System.out.println(aktieListe.item(i).getParentNode().getNodeName() + " " + aktieListe.item(i).getNodeValue()); 
        }
Avatar billede arne_v Ekspert
20. november 2013 - 15:33 #1
Laese ind i en ArrayList<DinDataKlasse> vil ofte vaere en god ide.
Avatar billede Omega-D Nybegynder
21. november 2013 - 10:00 #2
Hej Arne,

Tak for svar.

Er dog stadig lidt i tvivl om hvordan jeg bedst kommer videre, da jeg har følgende udfordringer:

XML filen består af mange aktier indeholdende mange køb/salg og hvert køb/salg indeholder flere data som jeg skal bruge - eksempelvis antal styk, handelsdato og kurs. Dvs., jeg skal finde en hensigtsmæssig måde hvorpå jeg kan videreføre alle disse data.

Skal jeg starte med at hente alle data ud af XML filen og dernæst placere disse i et multi-dimensionelt array for at bevare sammenhængen mellem dataene? - f.eks. hvilke køb der hører til en bestemt aktie og hvilke kurser der hører til et bestemt køb

Eller skal jeg lave mange forskellige udtræk af data fra XML filen - f.eks. nøjes med at parse alle køb, når jeg skal bruge disse - hvis ja hvordan kan jeg sikre mig at dette sker opdelt på hver aktie (findes der selection metoder)

Endvidere skal alle køb håndteres efter et FIFO princip ud fra handelsdatoen - hvordan gør jeg bedst dette (skal jeg anvende et Queue objekt - dette skal kunne tage højde for handelsdato). Kan et Queue objekt indeholde flerdimensionelle data?

Og hvad med performance ift. alt dette, der kan være ekstremt mange data!
Avatar billede arne_v Ekspert
22. november 2013 - 01:53 #3
Ikke multi dimensionelt array men en data klasse.

ArrayList<DinDataKlasse>

eller

LinkedList<DinDataKlasse>

en instans af DinDataKlasse indeholder saa de data som hoerer sammen.
Avatar billede Omega-D Nybegynder
22. november 2013 - 13:26 #4
Ok - tak.
Avatar billede arne_v Ekspert
15. december 2013 - 04:40 #5
Og du tog selv point fordi?
Avatar billede Omega-D Nybegynder
16. december 2013 - 09:22 #6
En fejl - Jeg forsøgte at tildele dig point:-)

(vist ikke muligt, da dit "svar" er en kommentar:-))
Avatar billede arne_v Ekspert
18. december 2013 - 04:48 #7
Fejl sker.

Jeg kom ogsaa til at bidrage til dit naeste spoergsmaal.

Men jeg maa se om jeg kan undgaa det fremover.
Avatar billede Omega-D Nybegynder
18. december 2013 - 12:00 #8
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester