How to get element den Wert aus XML mittels SAX-parser in startElement?
Ist es möglich, den Inhalt eines Elements, das aus einer XML-Datei in startElement
- Funktion die override-Funktion des SAX-handler?
Unten ist die Spezifikation.
1) XML-Datei
<employees>
<employee id="111">
<firstName>Rakesh</firstName>
<lastName>Mishra</lastName>
<location>Bangalore</location>
</employee>
<employee id="112">
<firstName>John</firstName>
<lastName>Davis</lastName>
<location>Chennai</location>
</employee>
<employee id="113">
<firstName>Rajesh</firstName>
<lastName>Sharma</lastName>
<location>Pune</location>
</employee>
</employees>
2) startElement
Funktion
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
.......code in here..........
}
3) erwartetes Ergebnis
element name : employee
attribute name : id
attribute value: 111
firstName : Rakesh
lastName : Mishra
location : Bangalore
element name : employee
attribute name : id
attribute value: 112
firstName : John
lastName : Davis
location : Chennai
element name : employee
attribute name : id
attribute value: 113
firstName : Rajesh
lastName : Sharma
location : Pune
mkyong.com/java/how-to-read-xml-file-in-java-sax-parser
danke. Ich habe bereits probiert diesen hier. Wenn ich sage, ich möchte nur den code schreiben, in der startElement-Funktion, ist es möglich?
Sie erhalten nur die Attribute in startElement. Alle text-Werte, die in Zeichen. Sie verwenden sollten, startElement erkennen,, wenn ein element gestartet. Im inneren können Sie legen Sie die flags, die können Sie in der Zeichen - Methode. Zu wissen, welches ist das aktuelle element innerhalb von Zeichen, können Sie seinen Wert. Müssen Sie daran denken, setzen Sie diese flags in endElement.
Mit startElement() und die andere Methode ist die einzige Möglichkeit, den Zugriff auf Daten in XML. ich glaube nicht, seine möglich zu schreiben, jedes Ding im startElement. SAX-Parser ist anders als der DOM, weil es nicht laden Sie die komplette XML in den Speicher und Lesen von xml-Dokument sequenziell. startElement() : Jedes mal, wenn ein SAX-parser bekommt einen öffnenden tag '<', ruft startElement(). endElement(): Jedes mal, wenn ein SAX-parser wird ein schließendes tag '>', ruft endElement(). Zeichen(): Jedes mal, wenn ein SAX-parser wird eine einfache Zeichenfolge, ruft Charakter () - Methode und die xml nach den geschriebenen code in startElement().
vielen Dank für Ihre einfache Konzept verstehen. wie wäre es mit dieser option? Ich möchte eine Reihe von tagName, attName, attValue, und tag ' s Wert. Der Grund warum ich Frage dies, weil ich es in einem anderen thread.
danke. Ich habe bereits probiert diesen hier. Wenn ich sage, ich möchte nur den code schreiben, in der startElement-Funktion, ist es möglich?
Sie erhalten nur die Attribute in startElement. Alle text-Werte, die in Zeichen. Sie verwenden sollten, startElement erkennen,, wenn ein element gestartet. Im inneren können Sie legen Sie die flags, die können Sie in der Zeichen - Methode. Zu wissen, welches ist das aktuelle element innerhalb von Zeichen, können Sie seinen Wert. Müssen Sie daran denken, setzen Sie diese flags in endElement.
Mit startElement() und die andere Methode ist die einzige Möglichkeit, den Zugriff auf Daten in XML. ich glaube nicht, seine möglich zu schreiben, jedes Ding im startElement. SAX-Parser ist anders als der DOM, weil es nicht laden Sie die komplette XML in den Speicher und Lesen von xml-Dokument sequenziell. startElement() : Jedes mal, wenn ein SAX-parser bekommt einen öffnenden tag '<', ruft startElement(). endElement(): Jedes mal, wenn ein SAX-parser wird ein schließendes tag '>', ruft endElement(). Zeichen(): Jedes mal, wenn ein SAX-parser wird eine einfache Zeichenfolge, ruft Charakter () - Methode und die xml nach den geschriebenen code in startElement().
vielen Dank für Ihre einfache Konzept verstehen. wie wäre es mit dieser option? Ich möchte eine Reihe von tagName, attName, attValue, und tag ' s Wert. Der Grund warum ich Frage dies, weil ich es in einem anderen thread.
InformationsquelleAutor sakura | 2014-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie das element Namen in
startElement
undendElement
. Sie können auch Attribute instartElement
. Die Werte sollten Sie incharacters
.Hier ist ein sehr einfaches Beispiel auf, wie Sie den Wert eines Elements mit einem
ContentHandler
:Wenn Sie haben ein einfaches Beispiel, Einstellung boolean-flags für jedes tag, das ist OK. Wenn Sie ein komplexeres Szenario, Sie könnten es vorziehen, speichern Sie die flags, die in einer Karte mithilfe von element-Namen als Schlüssel, oder sogar das erstellen einer oder mehrerer
Employee
Klassen zugeordnet XML, instanziieren Sie jedes mal, wenn<employee>
ist instartElement
, füllen Sie seine Eigenschaften, und fügen Sie es an eine Sammlung inendElement
.Hier ist eine komplette
ContentHandler
Beispiel, das funktioniert mit deiner Beispieldatei. Ich hoffe, es hilft Ihnen, begonnen zu erhalten:Wie oben gezeigt, in der
startElement
Methode, die Sie Lesen können, die tag-Namen (qName
) und alle Attribute, die Sie Lesen können, von deratts
variable (atts.getQName(i)
undatts.getValue(i)
), zu Lesen aber der tag text Wert, den Sie verwenden müssen, um diecharacters
Methode und use-flags, wie oben gezeigt. Wenn Sie das Beispiel oben sollte das Ergebnis bekommen, das Sie erwarten.Wie über die verschiedenen xml-Datei? Wir implementieren müssen, um die anderen codes? Wie merke ich, dass Ihr code die Verwendung bestimmter tagName Zustand. Wenn wir nicht wissen, wie die eine, was sollen wir tun?
Sie können drucken Sie einfach den tag-Namen, wenn Sie es wünschen, und statt der Einstellung flags basierend auf der tag-name, tun, dass, basierend auf Ihren relativen Positionen (eine Karte erstellen und speichern die Namen und Zusammenhänge, wie Sie Sie Lesen).
SAX ist bestimmt für sequenzielle Lesen einer XML-Datei, die notwendig ist, wenn Sie brauchen, um zu extrahieren von bits von Informationen aus großen Dateien. Wenn Sie wollen, um alle Daten zu gleichzeitig, indem Sie einfach mit Methoden zum extrahieren der Daten, die Sie wünschen, Sie könnten es vorziehen, verwenden Sie ein Objekt-Modell-API wie DOM oder XPath.
InformationsquelleAutor helderdarocha