Hvordan går jeg ind i rotor og henter de data der står derinde og gemmer dem i variabler?. Jeg skal altså efter kaldet have 4 variabler med indholdet af <text>"en streng"</text>, <notch>"en streng"</notch>, <ring>"int"</ring> og <pos>"int"</pos>
Det skal siges at mit XML dokument godt kan indeholde flere rotor tags.
Jeg har læst en del om XML og java her på siden, og det ser ud til at det ikke kan gøres simpelt og i få linier kode, men håber på at i kan vise mig hvordan man gør det forholdsvist simpelt.
Jeg har prøvet at flytte koden over i en ny metode, der returnerer dette hashmap m. Jeg kalder denne funktion i main, men når jeg kører process(m); (har kaldt den det samme) så er den sidste "rotor" der bliver udskrevet, men hvis jeg kører process(m); inde i funktionen, så er det alle "rotorer" der bliver udskrevet
public class Enigma2 { public static void main(String[] args) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File("C:\\enigma.xml")); List lst = new ArrayList(); NodeList elements = doc.getElementsByTagName("rotor"); for (int i = 0; i < elements.getLength(); i++) { Node element = (Element) elements.item(i); Rotor r = new Rotor(); NodeList elements2 = element.getChildNodes(); for(int j = 0; j < elements2.getLength(); j++) { if(elements2.item(j).getNodeType() == Node.ELEMENT_NODE) { Node element2 = (Element) elements2.item(j); String key = element2.getNodeName(); String val = element2.getFirstChild().getNodeValue(); if(key.equals("text")) { r.setText(val); } else if(key.equals("notch")) { r.setNotch(val); } else if(key.equals("ring")) { r.setRing(val); } else if(key.equals("pos")) { r.setPos(val); } } } lst.add(r); } System.out.println(lst); } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return; } }
class Rotor { private String ring; private String text; private String notch; private String pos; public String getNotch() { return notch; } public void setNotch(String notch) { this.notch = notch; } public String getPos() { return pos; } public void setPos(String pos) { this.pos = pos; } public String getRing() { return ring; } public void setRing(String ring) { this.ring = ring; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String toString() { return (text + " " + notch + " " + ring + " " + pos); } }
Synes godt om
Ny brugerNybegynder
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.