XML für Java
-
Hallo Leute!!
Ich habe rein gar keine Ahnung von Java Programmierung, muss aber ein kleines Programm in dieser Sprache schreiben.
Ich kenn mich einigermaßen gut mit C/C++ aus.
Das Java Programm soll eine TCP/IP Verbindung zu einem Server aufbauen und XML Nachrichten verschicken/empfangen.
Für C/C++ nutze ich dafür tinyXML (plattformunabhängige OpenSource Bibliotheken)
Gibt es sowas auch für Java? Es sollte möglich einfach zu handhaben sein (braucht nicht viel schnick schnack)
Plattformunabhängig und OpenSource sollte es auch sein.
Gruß
WAR][FIRE
-
Hallo,
ich würde es mal mit der Streaming API for XML probieren.
Die verwendet pull-parsing, ist nicht sehr speicheraufwändig und leicht zu
bedienen.Eine schöne Einführung gibt es hier:
http://www.xml.com/pub/a/2003/09/17/stax.html
-
java enthählt bereits SAX und DOM bibliotheken für xml verarbeitung.
-
WAR][FIRE schrieb:
Es sollte möglich einfach zu handhaben sein (braucht nicht viel schnick schnack)
Dann ist StAX dein Ding. Einfach zu bedienen, ungefähr so wie ein DOM Parser - darüberhinaus so speichereffizient wie ein SAX Parser.
-
Alles klar danke!
Wert mir StAX/SAX/DOM mal angucken. Ist bestimmt das richtige für mich dabei
Gruß
WAR][FIRE
-
Hallo Leute!
Ich hol den alten Thread mal wieder hoch
Jetzt sitze ich hier an meinem kleinem Programm und beschäftige mich mit XML.
Ich habe auch schon eine recht einfache Form gefunden um eine XML Datei einzulesen. Allerdings gibt es noch ein paar Schwierigkeiten.
Folgende Bsp. XML:
<?xml version="1.0" encoding="UTF-8"?> <root> <port>1</port> <baud>9600</baud> <bit>1</bit> <parity>0</parity> </root>
Kann man laut einem Internet Beispiel wie folgt einlesen:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.XMLEvent; public class TestEventStaX { private String configFile; public void setFile(String configFile) { this.configFile = configFile; } public void readConfig() { try { // zuerst eine neue XMLInputFactory erstellen XMLInputFactory inputFactory = XMLInputFactory.newInstance(); // einen neuen eventReader einrichten InputStream in = new FileInputStream(configFile); XMLEventReader eventReader = inputFactory.createXMLEventReader(in); // das XML-Dokument lesen while (eventReader.hasNext()) { XMLEvent event = eventReader.nextEvent(); if (event.isStartElement()) { if (event.asStartElement().getName().getLocalPart() == ("port")) { event = eventReader.nextEvent(); System.out.println(event.asCharacters().getData()); continue; } if (event.asStartElement().getName().getLocalPart() == ("baud")) { event = eventReader.nextEvent(); System.out.println(event.asCharacters().getData()); continue; } if (event.asStartElement().getName().getLocalPart() == ("bit")) { event = eventReader.nextEvent(); System.out.println(event.asCharacters().getData()); continue; } if (event.asStartElement().getName().getLocalPart() == ("parity")) { event = eventReader.nextEvent(); System.out.println(event.asCharacters().getData()); continue; } } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (XMLStreamException e) { e.printStackTrace(); } } public static void main(String args[]) { TestEventStaX read = new TestEventStaX(); read.setFile("root.xml"); read.readConfig(); } }//End Class
Wie kann ich denn eine XML Nachricht aus einem Byte-Array auslesen?
Ich verschicke über TCP/IP Ethernet immer XML Nachrichten. In Java sind das ja Byte-Arrays die verschickt werden...
Dazu die Frage:
Ich möchte die extrahierten Daten nicht ausgeben, sondern in einer Variable abspeichern. Wie mache ich das?
Evtl so?:char[] array1 = new char[1000] ; array1 = event.asCharacters().getData();
Ich möchte nochmals dazu sagen das ich erst seit ca. 3 Tagen mit Java arbeite! (vorher C++)
Ich bin froh über jede Antwort!
Gruß
WAR][FIRE
-
OK mal ganz konkret:
Ein XML String mit folgender Struktur muss "geparst" werden:
<my_XML Type="foo"> <my_int1 var1="2" /> <my_int2 var2="0" /> <Messsage>hallo ich bin eine test Message</Message> </my_XML>
Wie bekomme ich das geparst und in passende Variablen geschrieben?
Die Stuktur der Funktion sieht wie folgt aus:
public void extractXml(byte[] inBuffer,int var1,int var2, char[] msg) { //...hier soll der Inhlat des XML Strings "inBuffer" in die passenden Variablen geschrieben werden }
Im Byte-Array "inBuffer" wird der XML String übergeben, der geparst werden soll.
In var1 soll singemäß var1 aus dem XML String reingeladen werden. Mit var2 soll analog das gleiche passieren.
Im char Array "msg" soll die Message abgespeichert werden.
Kann mir dazu vielleicht jemand was sagen? Evtl. sogar Code Stücke???
Ich komm in diesen XML kram irgendwie nicht so leicht reinGruß
WAR][FIRE