JAXB zu DOM

Benutzer187

Aktives Mitglied
Hallo,
und zwar hab ich die Aufgabe, in einem Programm JAXB durch DOM zu ersetzen.

Ich habe eine XML, die tausende von Zeilen groß ist, das heißt ich kann die einzelnden Attribute usw. nicht einzelnd holen und auch später wieder erstellen.
Mir fällt nun aber nichts ein, wie ich automatisieren kann, dass das Ganze für mich automatisch, für jedes Attribut durchläuft und trotzdem alle Attribute setzt, obwohl ich diese nicht einzelnd angebe.
Vielleicht kann mir jemand weiterhelfen?
 

Benutzer187

Aktives Mitglied
Ich habe ein Programm, welches zur Zeit zum xml parsen, JAXB nutzt. Ich soll nun, diese JAXB-Funktionalität mit dem DOM Parser ablösen.
Ich habe eine xml datei, aus der ich die Attribute und Elemente lesen möchte, um mit diesen weiterarbeiten zu können. Da meine xml Datei zu groß ist, um jedes Attribut mit getAttribute("") einzelnd zu holen muss ich es automatisieren, dass alle Elemente und Attribute durch "wenige" Zeilen gelesen bzw. gegettet werden.

//Sorry wenns immernoch unverständlich ist.
 

Flown

Administrator
Mitarbeiter
Schau dir doch mal XPath an, das könnte genau das sein, was du brauchst. Oder wenn du nur wenige Zeilen rausholen möchtest, dann wäre für dich ein Stream Parser eventuell interessant.
 

httpdigest

Top Contributor
Du möchtest nicht DOM verwenden (das ganze Dokument erstmal in den Speicher laden und dann verarbeiten), sondern eher SAX (Simple API for XML). Lies dir mal folgende Seite durch:
https://www.journaldev.com/1198/java-sax-parser-example

EDIT: Einfacheres Beispiel:
Java:
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

class SomeHandler extends DefaultHandler {
  @Override
  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    System.out.println("Element start: " + qName);
  }
  @Override
  public void endElement(String uri, String localName, String qName) throws SAXException {
    System.out.println("Element end: " + qName);
  }
  @Override
  public void characters(char ch[], int start, int length) throws SAXException {
    System.out.println("Text: " + new String(ch, start, length));
  }
}
public class XMLParserSAX {
  public static void main(String[] args) throws Exception {
    SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
    SAXParser saxParser = saxParserFactory.newSAXParser();
    SomeHandler handler = new SomeHandler();
    saxParser.parse(new File("some.xml"), handler);
  }
}
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben