Reihenfolge beim xml Datei parsen einhalten?

Lenzen

Aktives Mitglied
Hallo, ich möchte gern die Reihenfolge der Einträge aus der xml Datei einhalten. Momentan passiert das nicht. Wer kann mir helfen?

Java:
<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<httpSample ts="1276602591589" lb="Funktion_1" rc="500" rm="Internal Server Error" sc="1" ec="1">
  <responseData class="java.lang.String">&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;&lt;Wichtig1</responseData>
</httpSample>
<sample ts="1276602591670" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_1 - Ergebnis: ID: null!!! 1</responseData>
</sample>

<httpSample ts="1276602592674" lb="Funktion_2" rc="500" rm="Internal Server Error" sc="1" ec="1">
  <responseData class="java.lang.String">&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;&lt;Wichtig2</responseData>
</httpSample>
<sample ts="1276602592754" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_2 - Ergebnis: ID: null!!! 2</responseData>
</sample>

<httpSample ts="1276602593869" lb="Funktion_4" rc="500" rm="Internal Server Error" sc="1" ec="1">
  <responseData class="java.lang.String">&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;&lt;Wichtig3</responseData>
</httpSample>
<sample ts="1276602593943" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_3 - Ergebnis: ID: null!!! 3</responseData>
</sample>

<httpSample ts="1276602595036" lb="Funktion_5" rc="500" rm="Internal Server Error" sc="1" ec="1">
  <responseData class="java.lang.String">&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;&lt;Wichtig4</responseData>
</httpSample>
<sample ts="1276602595121" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_4 - Ergebnis: ID: null!!! 4</responseData>
</sample>

<sample ts="1276602595121" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_5 - Ergebnis: ID: null!!! 5</responseData>
</sample>
<sample ts="1276602595121" lb="Ausgabe" rc="200" rm="OK" sc="1" ec="0">
  <responseData class="java.lang.String">Funktion_6 - Ergebnis: ID: null!!! 6</responseData>
</sample>

</testResults>

Java:
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Zeitstempel_neu { 
  
  static String fileString = "/tmp/test.xml";
  

  public static void nodeElements(NodeList nodeLst){    
    for (int s = 0; s < nodeLst.getLength(); s++) {
      Node fstNode = nodeLst.item(s);        
      if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
        Element fstElmnt = (Element) fstNode;        
        NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("responseData");
        Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
        NodeList fstNm = fstNmElmnt.getChildNodes();  
 
        String zeitstempel = fstNode.getAttributes().item(5).getNodeValue();
        String funktion = fstNode.getAttributes().item(1).getNodeValue();
        String fehlerCode = fstNode.getAttributes().item(3).getNodeValue();
        String fehlerNachricht = fstNode.getAttributes().item(2).getNodeValue();
        String proben = fstNode.getAttributes().item(4).getNodeValue();
        String fehler = fstNode.getAttributes().item(0).getNodeValue();
        
        //System.out.println("TagName:" + fstNode.getNodeName());
 
        if((fstNm.item(0)) == null){
          System.out.println(s+" "+zeitstempel + ","+ funktion +","+ fehlerCode +","+ fehlerNachricht + ","+ proben + "," + fehler + ","+ "null");          
        }else{
          System.out.println(s+" "+zeitstempel + ","+ funktion +","+ fehlerCode +","+ fehlerNachricht + ","+ proben + "," + fehler + ","+ ((Node) fstNm.item(0)).getNodeValue());          
        }
      }

    }     
  }
  
  
  public static void parseXml(){
    Document doc = null;
    
    try {       
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();         
      File file = new File(fileString);
      doc = db.parse(file); 
      doc.getDocumentElement().normalize();
      //System.out.println("Root element " + doc.getDocumentElement().getNodeName());
      
      NodeList nodeLst = doc.getElementsByTagName("httpSample");
      //System.out.println("Information of all samples1");
      nodeElements(nodeLst);
      
      NodeList nodeLst1 = doc.getElementsByTagName("sample");
      //System.out.println("Information of all samples2");
      nodeElements(nodeLst1);
            
      } catch (Exception e) {        
        e.printStackTrace();
      }   
  }

  public static void main(String[] args) {     
    parseXml();    
  }
}

Die Ausgabe momentan sieht so aus:
Java:
0 1276602591589,Funktion_1,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig1
1 1276602592674,Funktion_2,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig2
2 1276602593869,Funktion_4,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig3
3 1276602595036,Funktion_5,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig4
0 1276602591670,Ausgabe,OK,200,1,0,Funktion_1 - Ergebnis: ID: null!!! 1
1 1276602592754,Ausgabe,OK,200,1,0,Funktion_2 - Ergebnis: ID: null!!! 2
2 1276602593943,Ausgabe,OK,200,1,0,Funktion_3 - Ergebnis: ID: null!!! 3
3 1276602595121,Ausgabe,OK,200,1,0,Funktion_4 - Ergebnis: ID: null!!! 4
4 1276602595121,Ausgabe,OK,200,1,0,Funktion_5 - Ergebnis: ID: null!!! 5
5 1276602595121,Ausgabe,OK,200,1,0,Funktion_6 - Ergebnis: ID: null!!! 6
 
Zuletzt bearbeitet:
A

asfasfasfasfasf

Gast
Wieso, die Reihenfolge ist doch richtig, oder überseh ich was?

PS: Das ist natürlich clever, Standardbenutzername 'Gast' wird nicht akzeptiert (und fast jedes Captcha ist unlesbar)....
Dieser Benutzername ist bereits vergeben oder erfüllt nicht die vom Administrator festgelegten Richtlinien.
 

Lenzen

Aktives Mitglied
Die Ausgabe soll so aussehen. (Die Nummerierung vorn ist nicht wichtig. Deswegen hab ich sie hier weg gelassen)
Java:
1276602591589,Funktion_1,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig1
1276602591670,Ausgabe,OK,200,1,0,Funktion_1 - Ergebnis: ID: null!!! 1
1276602592674,Funktion_2,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig2
1276602592754,Ausgabe,OK,200,1,0,Funktion_2 - Ergebnis: ID: null!!! 2
1276602593869,Funktion_4,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig3
1276602593943,Ausgabe,OK,200,1,0,Funktion_3 - Ergebnis: ID: null!!! 3
1276602595036,Funktion_5,Internal Server Error,500,1,1,<?xml version='1.0' encoding='UTF-8'?><Wichtig4
1276602595121,Ausgabe,OK,200,1,0,Funktion_4 - Ergebnis: ID: null!!! 4
1276602595121,Ausgabe,OK,200,1,0,Funktion_5 - Ergebnis: ID: null!!! 5
1276602595121,Ausgabe,OK,200,1,0,Funktion_6 - Ergebnis: ID: null!!! 6
 
A

asfasfasfasfasf

Gast
Du gehst ja auch zuerst die httpSample/responseData durch und danach alle sample/responseData, natürlich ist die Ausgabe dann identisch mit der Reihenfolge wie du sich durchiterierst. Warum gehst du nicht direkt alle */responseData durch wenn du sie in der natürlichen Reihenfolge willst (sorry für die pseudo-xpaths)
 

Lenzen

Aktives Mitglied
Leider wird der * nicht akzeptiert und es folgt eine NullPointerException.

Java:
NodeList nodeLst = doc.getElementsByTagName("*");
 
A

asfasfasfasfasf

Gast
Hä, du willst doch anscheinend
NodeList nodeLst = doc.getElementsByTagName("responseData");
?
 

Lenzen

Aktives Mitglied
Das war auch schon eine meine Idee. Nur wenn ich das so mache wie du schreibst, dann tritt an der Stelle:
Java:
NodeList fstNm = fstNmElmnt.getChildNodes();
eine NullPointerException auf.
 
A

asfasfasfasfasf

Gast
Das war auch schon eine meine Idee. Nur wenn ich das so mache wie du schreibst, dann tritt an der Stelle:
Java:
NodeList fstNm = fstNmElmnt.getChildNodes();
eine NullPointerException auf.

Keine Ahnung was die Zeile machen soll oder was "fstNm(Elmnt)" sein soll, aber dass du deinen Code entsprechend ändern musst ist natürlich klar. Bei der Gelegenheit solltest du auch gleich mal die in der Gegend stehenden item(n) aufrufe entfernen (besonders bei den Attributen), denn sonst fliegt der dir morgen eh wieder auf die Nase.
 

Lenzen

Aktives Mitglied
Mittlerweile habe ich das Programm soweit fertig. Ich nehme das oberste Element und gehe dann jedes Kind durch und hole mir die Daten vom Kind. Dafür habe ich eine zweite for Schleife in die erste aufgenommen.
Java:
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Zeitstempel_neu { 
  
  static String fileString = "/tmp/test.xml";
  

  public static void nodeElements(NodeList nodeLst) {

    for (int s = 0; s < nodeLst.getLength(); s++) {
      Node fstNode = nodeLst.item(s);
      Element fstElmnt = (Element) fstNode;
      NodeList fstNmElmntLst = fstElmnt.getChildNodes();
      //System.out.println(fstNmElmntLst.item(s).getNextSibling().getNodeName());

      for (int t = 0; t < fstNmElmntLst.getLength(); t++) {
        Node fstNodeNew = fstNmElmntLst.item(t);

        if (fstNodeNew.getNodeType() == Node.ELEMENT_NODE) {
          Element fstElmntNew = (Element) fstNodeNew;
          NodeList fstNmElmntLstNew = fstElmntNew.getElementsByTagName("responseData");
          Element fstNmElmntNew = (Element) fstNmElmntLstNew.item(0);
          NodeList fstNm = fstNmElmntNew.getChildNodes();
          
          String zeitstempel = fstNodeNew.getAttributes().item(5).getNodeValue();
          String funktion = fstNodeNew.getAttributes().item(1).getNodeValue();
          String fehlerCode = fstNodeNew.getAttributes().item(3).getNodeValue();
          String fehlerNachricht = fstNodeNew.getAttributes().item(2).getNodeValue();
          String proben = fstNodeNew.getAttributes().item(4).getNodeValue();
          String fehler = fstNodeNew.getAttributes().item(0).getNodeValue();

          // System.out.println("TagName:" + fstNode.getNodeName());

          if ((fstNm.item(0)) == null) {
            System.out.println(s + " " + zeitstempel + "," + funktion + "," + fehlerCode + "," + fehlerNachricht + "," + proben + "," + fehler + "," + "null");
          } else {
            System.out.println(s + " " + zeitstempel + "," + funktion + "," + fehlerCode + "," + fehlerNachricht + "," + proben + "," + fehler + "," + ((Node) fstNm.item(0)).getNodeValue());
          }
        }
      }

    }
  }
  
  
  public static void parseXml(){
    Document doc = null;
    
    try {       
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();         
      File file = new File(fileString);
      doc = db.parse(file); 
      doc.getDocumentElement().normalize();
      //System.out.println("Root element " + doc.getDocumentElement().getNodeName());
      
      NodeList nodeLst = doc.getElementsByTagName("testResults");
      nodeElements(nodeLst);
         
      } catch (Exception e) {        
        e.printStackTrace();
      }   
  }
  public static void main(String[] args) {     
    parseXml();    
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JDOM setAttribute Reihenfolge XML & JSON 3
T StAX und Reihenfolge in XML XML & JSON 6
C DOM: Attribute nicht in alphabetischer Reihenfolge schreiben XML & JSON 3
B Muss die Reihenfolge einheitlich sein? Bitte kurz reinschauen XML & JSON 6
B DTD Problem - Reihenfolge der Einträge XML & JSON 2
W Ungleiches Escaping beim Marshalling XML & JSON 8
S Hilfe beim RDF-Graphen XML & JSON 0
R Beim Serialisieren fehlt die letzte Zeile XML & JSON 5
N Probleme bei der Formatierung beim Einfügen und löschen über DOM XML & JSON 7
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
L Jackson JSON: Probleme beim einlesen XML & JSON 1
A XML-Fehler beim Prefix von xmlns XML & JSON 2
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
G Langsam beim SAX-Parsen - woran liegts? XML & JSON 2
A Fehler beim Erzeugen eines XML-Schema XML & JSON 4
B Validierung nur beim einlesen oder auch beim schreiben? XML & JSON 4
D JAXBException beim Marshaller XML & JSON 4
M Read / write Problem beim ByteStrom XML & JSON 2
whitenexx Problem beim parsen von Facebook XML XML & JSON 3
J Dateinamen beim Start auslesen XML & JSON 8
F Hilfe beim bearbeiten von XML elemente XML & JSON 3
N XStream ConversionException beim Deserialisieren in (Hibernate)Objekt XML & JSON 6
hdi Probleme beim Erstellen einer XML XML & JSON 7
F Probleme beim html parsen mit tagsoup XML & JSON 4
M Probleme beim Parsen eines gefilterten XML-Dokuments XML & JSON 6
G Problem beim schreiben von XML in eine File XML & JSON 2
H JAXB Probleme beim Unmarshalling XML & JSON 3
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
B Problem beim löschen von ChildNodes aus einem XML-DOM XML & JSON 3
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
N Hilfe beim Einstieg in EMF XML & JSON 6
D Das Programm hängt etwa 5 Sekunden beim Aufruf der parse-Methode XML & JSON 6
D Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren XML & JSON 5
T Problem beim Parsen von Attribut xmlns="urn:com:test&qu XML & JSON 6
G XML Tag beim Einlesen manipulieren XML & JSON 2
J Problem beim XML-Lesen XML & JSON 2
S Probleme beim erstellen einer Jar XML & JSON 12
N jdom problem beim lesen von child elementen XML & JSON 5
P NullPointerException beim Auslesen XML & JSON 8
M Performance beim Binding XML & JSON 2
C SAX Probleme beim lesen XML & JSON 4
D Probleme beim SAX parsing XML & JSON 4
E XOM setzen von XML-Schema declaration beim erzeugen XML-File XML & JSON 2
byte Probleme beim Parsen von XHTML-Datei XML & JSON 4
J Fehler beim laden einer .xml XML & JSON 3
G DOCTYPE Problem beim Transformer/TransformerFactory etc. XML & JSON 13
P OutOfMemoryError beim Einlesen einer XML-Datei XML & JSON 7
P Problem beim erstellen eines neuen Elements (JDOM) XML & JSON 5
S JDOM-Kein indent beim XMLOutputter XML & JSON 4
C Zeile herausfinden in der ein Fehler beim Einlesen entsteht XML & JSON 3
V Datenverlust nach sortieren (nur beim serialisieren) XML & JSON 4
S Problem beim Erstellen eines pdfs XML & JSON 3
R Problem beim Auslesen von Attributen XML & JSON 4
R JAVA und DOM, probleme beim einfügen von elementen ?????? XML & JSON 6
T Tags in XML Datei mit Java erstellen XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
P (Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF XML & JSON 12
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M XML Datei heapspace erreicht XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben