In diesem Beispiel werden auf dem Funkmodul Preon32 gespeicherte Messdaten, die
in einer XML-Beschreibung (eXtensible Markup Language) vorliegen, ausgewertet.
Die Umsetzung zeigt die Leistungsfähigkeit des Funkmoduls Preon32. Für das Parsen
der XML-Beschreibung wird die im Internet verfügbare Bibliothek "qdparser" eingesetzt,
die ursprünglich für Mobiltelefone mit Java ME entwickelt wurde. Diese Bibliothek kann
ohne Anpassung auf dem Preon32 eingesetzt werden.
"XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch
strukturierter Daten in Form von Textdaten. XML wird u. a. für den plattform- und
implementationsunabhängigen Austausch von Daten zwischen Computersystemen eingesetzt,
insbesondere über das Internet." (Quelle: Wikipedia)
XML - Extrahieren von Sensordaten
/*
* Copyright (c) 2011., Virtenio GmbH
* All rights reserved.
*/
package com.virtenio.webdemo;
import com.twicom.qdparser.Element;
import com.twicom.qdparser.TaggedElement;
import com.twicom.qdparser.XMLParseException;
import com.twicom.qdparser.XMLReader;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class XmlParse {
public static void main(String[] args) {
String XmlStr =
"<varisenA>\n" +
" <humidity Tr='30332' RHr='16196'/>\n" +
" <pressure Pr='341' Tr='453'/>\n" +
" <light raw='4041'/>\n" +
" <temp Tr='4400'/>\n" +
"</varisenA>";
try {
parseXmlDescription(XmlStr);
} catch (XMLParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void parseXmlDescription(String xmlStr)
throws XMLParseException, IOException {
XMLReader parser = new XMLReader(xmlStr);
try {
parser.startDocument();
TaggedElement tag = parser.parse();
String name = tag.getName();
if (name.equals("varisenA")) {
List<Element> elements = tag.getElements();
for (Element element : elements) {
tag = (TaggedElement) element;
Map<String, String> attributes = tag.getAttributes();
name = ((TaggedElement) element).getName();
if (name.equals("humidity")) {
int humidityRHr = Integer.parseInt(attributes.get("RHr"));
int humidityTr = Integer.parseInt(attributes.get("Tr"));
} else if (name.equals("pressure")) {
int pressureTr = Integer.parseInt(attributes.get("Tr"));
int pressurePr = Integer.parseInt(attributes.get("Pr"));
} else if (name.equals("light")) {
int lightRaw = Integer.parseInt(attributes.get("raw"));
} else if (name.equals("temp")) {
int tempTr = Integer.parseInt(attributes.get("Tr"));
}
}
}
parser.endDocument();
} catch (XMLParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


