XML String auslesen

Status
Nicht offen für weitere Antworten.

Happyman0815

Mitglied
Hallo Leute!


Ich probiere mich derzeit in XML-Techniken und muss jetzt einen XML-String parsen.

Folgendes recht einfaches Beispiel habe ich gefunden, was ich auf meinen Fall gerne Ableiten möchte:

//****************Bsp. Anfang

Folgende XML-Datei ist gegeben:
Java:
<?xml version="1.0" encoding="UTF-8"?>
<root>
     <port>1</port>
     <baud>9600</baud>
     <bit>1</bit>
     <parity>0</parity>
</root>


Diese XML-DAtei kann man laut Beispiel nun wie folgt parsen und ausgeben:
Java:
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


//****************Bsp. Ende


Dieses Beipiel unterscheidet sich in 3 Sachen von meinem Fall:
1.: Es liest eine XML Datein ein "read.setFile("root.xml");", bei mir ist es ein String.
2.: Es gibt keine Attribute (ich hoffe das war jetzt richtig :autsch:)
3.: Die geparsten Elemente sollen nicht ausgegeben werden sonder in Variablen gespeichert werden.


Mein XML String:

Mein zu parsender XML String hat folgende Struktur:
Java:
<my_XML Type="foo">
      <my_int1 var1="2" />
      <my_int2 var2="0" />
      <Messsage>hallo ich bin eine test Message</Message>
</my_XML>

Nun meine Fragen:

1. Wie bekomme ich es hin, das er einen String parst anstatt eine Datei einliest?

2. Im obigen Beispiel wird mir gezeigt wie ich (in meinem Beispiel) auf my_int1, my_int2 und auf Message zugreifen kann. Allerdings nicht, wie ich auf var1 und var2 (das müssten die Attribute sein??) zugreifen kann.
Dahre --> Wie muss ich den Beispielcode erweitern um darauf zuzugreifen?

3. Ich möchte die extrahierten Daten nicht ausgeben, sondern in Variablen abspeichern. Wie mache ich das?
Evtl. so?:

Java:
char[] array1 = new char[1000] ;
array1 = event.asCharacters().getData();

Ich hoffe jemand kann mir dabei ein bisschen helfen. Ich komm an dieser Stelle nichtmehr so wirklich weiter.:roll:

Gruß
Happyman0815
 
S

SlaterB

Gast
createXMLEventReader(new StringReader(string));

wann immer irgendwas mit irgendeiner Information gemacht wird, kann man sie an dieser Stelle genauso gut in einer lokalen Variablen oder einem Klassenattribut speichern:
variable = irgendwas;

> char[] array1 = new char[1000] ;
> array1 = event.asCharacters().getData();

das 1000er-Array wäre ganz umsonst erzeugt,

char[] array1 = null;
array1 = event.asCharacters().getData();
oder
char[] array1 = event.asCharacters().getData();
reicht völlig, falls da ein char[] kommt
 

Happyman0815

Mitglied
createXMLEventReader(new StringReader(string)); <-- Das funktioniert. Damit ist Frage 1 geklärt. Danke!


Frage 3 ist annäherd gelöst. Mit dem 1000èr Array hast du natürlich recht!


Bleibt hauptsächlich noch Frage 2.


Gruß
Happyman0815
 
S

SlaterB

Gast
ich kenne das genauso wenig,
aber was kann ich machen?
XMLEvent in google eintippen
->
XMLEvent (Java Platform SE 6)
da gibt es also eine Methode isAttribute(), die wird hilfreich sein,

dann steht da noch " All Known Subinterfaces: Attribute, Characters,.."
wahrscheinlich kann man es noch auf Attribute casten,
und dann die weiteren Methoden von Attribute

kann sein, dass das Konstrukt
if (startElement == ("port")) {
event = eventReader.nextEvent();
System.out.println(event.asCharacters().getData());
}
dann nicht mehr funktionieren wird, weit das nächste Element nach dem StartElement das Attribute sein wird,
einfach genau anschauen, welche Events in welcher Reihenfolge kommen

vielleicht sind die Attribute auch keine Events und man muss vom StartElement
getAttributes()
aufrufen,
alles in der API zu sehen
 
Zuletzt bearbeitet von einem Moderator:

Happyman0815

Mitglied
So ich habe nun 5 Stunden basteln die ********* voll gehabt und habe mir ein Beispiel von "JJava ist auch eine Insel" gekrallt.


siehe Link "15.4.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten"

oder:

Java:
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

...


InputStream in = new FileInputStream( "party.xml" ); 
XMLInputFactory factory = XMLInputFactory.newInstance(); 
XMLEventReader parser = factory.createXMLEventReader( in ); 
 
StringBuilder spacer = new StringBuilder(); 
while ( parser.hasNext() ) 
{ 
  XMLEvent event = parser.nextEvent(); 
 
  switch ( event.getEventType() ) 
  { 
    case XMLStreamConstants.START_DOCUMENT: 
      System.out.println( "START_DOCUMENT:" ); 
      break; 
    case XMLStreamConstants.END_DOCUMENT: 
      System.out.println( "END_DOCUMENT:" ); 
      parser.close(); 
      break; 
    case XMLStreamConstants.START_ELEMENT: 
      StartElement element = event.asStartElement(); 
      System.out.println( spacer.append("  ") 
                          + "START_ELEMENT: " 
                          + element.getName() ); 
      for ( Iterator<?> attributes = element.getAttributes(); 
            attributes.hasNext(); ) 
      { 
        Attribute attribute = (Attribute) attributes.next(); 
        System.out.println( spacer + "  Attribut: " 
                            + attribute.getName() + " Wert: " 
                            + attribute.getValue() ); 
      } 
      break; 
    case XMLStreamConstants.CHARACTERS: 
      Characters characters = event.asCharacters(); 
      if ( ! characters.isWhiteSpace() ) 
        System.out.println( spacer 
                            + "  CHARACTERS: " 
                            + characters.getData() ); 
      break; 
    case XMLStreamConstants.END_ELEMENT: 
      System.out.println( spacer 
                          + "END_ELEMENT: " 
                          + event.asEndElement().getName() ); 
      spacer.delete( (spacer.length() – 2), spacer.length() ); 
      break; 
    case XMLStreamConstants.ATTRIBUTE: 
      break; 
 
    default : 
      break; 
  } 
}


Dieses Beispiel nimmt quasi jede XML Datei auseinander.

Den EventReader erstetzt mit "createXMLEventReader(new StringReader(string));" und zack funktioniert alles so wie es soll!!!


Danke für die Hilfe!

Gruß
Happyman0815
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N XML-String in MIDP auslesen XML & JSON 3
W XML DomDocument als String auslesen XML & JSON 2
Sachinbhatt Python string find() examples XML & JSON 1
N JSON export String Unicode? XML & JSON 6
W Request als String XML & JSON 0
L Soapnachricht aus String erstellen XML & JSON 0
R String in XSLT teilen XML & JSON 3
P Bestimmte XML-Inhalte in String lesen XML & JSON 2
M RSS als String speichern XML & JSON 12
W XMLStreamReader zu String machen? XML & JSON 2
B XML-Element als String ausgeben XML & JSON 5
H XML String erstellen XML & JSON 4
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
W String nach XML nach String verwandeln XML & JSON 4
B jdom document aus string erzeugen? XML & JSON 1
H Adapter: String->Element bzw. Element->String XML & JSON 6
A XML Tags als PHP String XML & JSON 4
S String in element casten XML & JSON 2
I XML-String mit SAX parsen ? XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
G Elementbaum in String umwandeln XML & JSON 5
A StAX API: Cannot Cast from QName to String! XML & JSON 2
S org.jdom.document in String umwandeln. XML & JSON 2
S DefaultMutableTreeNodes als String in Textdatei speichern XML & JSON 7
W Xml-String parsen XML & JSON 2
B XML String einlesen XML & JSON 4
R XML Document als String XML & JSON 2
M Probleme mit String XML & JSON 3
G getAtributeValue liefert String mit störenden Steuerzeichen XML & JSON 2
D Text, String vor einem Root Element einfügen XML & JSON 2
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
E Element.setTextContent(String); Ersatz fuer Version 1.4? XML & JSON 3
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
M json page 2 auslesen XML & JSON 1
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
Kanda Sorata Eingabefelder von Excel Dateien auslesen XML & JSON 1
K XML vernünftig auslesen XML & JSON 9
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
H SOAPBody auslesen XML & JSON 0
B XML auslesen, benötige Hilfe XML & JSON 13
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
W XML einlesen und Attribute auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
M Json auslesen XML & JSON 7
K XML Auslesen, wie abspeichern? XML & JSON 32
D Attribute aus XML Auslesen XML & JSON 5
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
R Apache POI: Gezieltes Auslesen von Zellen XML & JSON 2
S XMl auslesen:@ output ? XML & JSON 1
Z Verschachtelte XML auslesen XML & JSON 3
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
I XML IDs auslesen, erst X dann Y XML & JSON 2
S XML - rekursives auslesen - Zeilenumbruch als NodeValue? XML & JSON 3
O XML richtig auslesen XML & JSON 7
Kenan89 XML Tag-ID auslesen mit getElementById XML & JSON 2
J Excel zeilenweise auslesen - POI XML & JSON 5
J Excel Zellen auslesen - automatischer Stopp bei leerer Zelle XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
S SVG auslesen und darstellen XML & JSON 5
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
1 Html tabelle auslesen??? XML & JSON 6
JanUlrich Tabelle auslesen XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
K XMl auslesen XML & JSON 19
P Poi /XSSF : Excel-Tabelle auslesen XML & JSON 2
S XSD-Datei zulässige Werte auslesen XML & JSON 3
D rss auslesen XML & JSON 2
S Attribute von Elementen auslesen mit XPath XML & JSON 2
M Große Datei auslesen/in dieser suchen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
J Dateinamen beim Start auslesen XML & JSON 8
eQuest XML Jaxen Attribute auslesen XML & JSON 2
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
P jdom XML-Encoding auslesen XML & JSON 12
H XML Attribute auslesen XML & JSON 5
Nicer Bestimmten Wert aus einer XML Auslesen XML & JSON 34
L XML Daten auslesen und in Tabelle (Array) speichern XML & JSON 1
L XML Dokument auslesen funktioniert nicht richtig XML & JSON 2
C Attributwert aus XML auslesen XML & JSON 10
E XML Knoten mit rekursiver Methode auslesen XML & JSON 3
S Dom Baum auslesen XML & JSON 12
J Properties auslesen (Jar) XML & JSON 1
S auslesen XML & JSON 9
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
M XMI-Datei auslesen XML & JSON 4
T EXSD auslesen mit XPath und JDOM XML & JSON 8
M XML-Datum als Referenz auf Objekt-Variable auslesen XML & JSON 5
Spot84 xmi auslesen XML & JSON 20
G Welche Klassen zum erzeugen/auslesen eines XML Files verwend XML & JSON 9
G Xml File schematisch auslesen XML & JSON 2
P NullPointerException beim Auslesen XML & JSON 8
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
K XML auslesen (simpel) XML & JSON 10
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
HeRaider Definitionen auslesen und Encoding XML & JSON 3
A SVG Datei auslesen und Batik XML & JSON 1

Ähnliche Java Themen

Neue Themen


Oben