2016-07-07 7 views
1

Ich überprüfe ein XML-Dokument auf Wohlgeformtheit (nur Syntaxprüfung). Ich validiere nicht gegen irgendein Schema. Ich muss dies mit StAX tun:StAX-Wohlgeformtheitsprüfung von XML

Ich weiß, dass ich die Datei analysieren muss, aber wie kann ich die Prüfung implementieren?

XMLInputFactory factory = XMLInputFactory.newInstance(); 
File f = new File(uploadfileName); 
FileInputStream inputStream = new FileInputStream(f); 
//Instantiate a reader parsing: 
XMLStreamReader reader=factory.createXMLStreamReader(inputStream); 

     while(reader.hasNext()){ 
      //check to be implemented?? 
      reader.next(); 
     } 
+1

Sie sind fertig. Durch das Lesen aller Ereignisse wurde das XML vollständig verarbeitet. Sie wissen also, dass keine XML-Syntaxfehler vorliegen. Wenn es gewesen wäre, wäre eine Ausnahme ausgelöst worden. --- Zu Ihrer Information: Wenn ich fertig sage, meine ich, dass Sie fertig sind, wenn Sie den 'inputStream' schließen, vorzugsweise mit try-with-resources. – Andreas

+0

Also, wenn ich meine eigene Fehlermeldung explizit hinzufügen möchte, verwende ich einen Try-Catch-Block? – psedonerd

+0

Das ist richtig. – Andreas

Antwort

2

Als @Andreas commented, Wohlgeformtheits- wird durch das Fehlen einer Ausnahme angegeben werden im Laufe raubend alle Parsen Ereignisse geworfen.

Konkret wird XMLStreamReader.next() eine XMLStreamException für alle wohlgeformten Fehler in der zu analysierenden XML werfen. Wenn das Parsen fortschreitet, wo XMLStreamReader.hasNext()false zurückgibt und Ihre while-Schleife beendet, ohne dass XMLStreamExceptions ausgelöst wurde, können Sie sicher sein, dass das XML wohlgeformt ist.