einfach XML lesen

Ich brauche einen möglichst einfachen Code mit dem man Daten aus XML-Dateien lesen kann. Ich habe bis jetzt versucht JDom zu benutzen, aber da kommen nur irgendwelche Fehlermeldungen, und außerdem ist mir das zu umständlich. Es muss doch eine einfache und unkomplizierte Möglichkeit geben, Daten zu lesen und in Java-Variablen zu speichern.
 
Ja. XMLPullParserFactory und XMLPullParser sind sehr empfehlenswert. Total eas anzuwenden. Die API ist bei Android sogar im standard package.

http://www.xmlpull.org/v1/doc/api/org/xmlpull/v1/package-summary.html

Beispiel Code wie ich einen RSS-Feed von Apple parse:
Java:
public boolean parseXML(String xmlData) {
boolean status = true;
boolean inEntry = false;
int eventType;
String tagName = "";
String tagValue = "";
FeedEntry currentRecord = null;
try {
XmlPullParserFactory fac = XmlPullParserFactory.newInstance();
fac.setNamespaceAware(true);
XmlPullParser xpp = fac.newPullParser();
xpp.setInput(new StringReader(xmlData));
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
tagName = xpp.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("entry".equalsIgnoreCase(tagName)) {
inEntry = true;
currentRecord = new FeedEntry();
}
break;
case XmlPullParser.TEXT:
tagValue = xpp.getText();
break;
case XmlPullParser.END_TAG:
if (inEntry) {
if ("title".equalsIgnoreCase(tagName)) {
currentRecord.setTitle(tagValue);
} else if ("summary".equalsIgnoreCase(tagName)) {
currentRecord.setSummary(tagValue);
} else if ("im:price".equalsIgnoreCase(tagName)) {
currentRecord.setIm_price(tagValue);
} else if ("rights".equalsIgnoreCase(tagName)) {
currentRecord.setRights(tagValue);
} else if ("entry".equalsIgnoreCase(tagName)) {
entries.add(currentRecord);
inEntry = false;
}
}
break;
}
eventType = xpp.next();
}
} catch (XmlPullParserException e) {
status = false;
Log.e(TAG, "parseXML: Factory couldnt be instantiated: " + e.getMessage());
} catch (IOException e) {
status = false;
Log.e(TAG, "parseXML: " + e.getMessage());
}
return status;
}
 
Hallo Crsh,

wenn es sich um kleinere XML Strukturen handelt, dann verwende ich gerne einen SAX Parser. Sobald die XML Strukturen komplexer werden, verwende ich JAXB.

Viele Grüße

ProChris
 
Hallo.

Hatte vorher auch keine Ahnung. Doch dank der folgenden Beitraege konnte ich es einfach loesen:
Musste nur ein wenig rumexperementieren:

Der Beitrag von Olivier Boisse
und



Notwendige imports:
import javax.xml.xpath.*;
import org.xml.sax.SAXException;
import java.io.FileReader;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

So verwendet man es:

File file = new File(offlineUrlXbrlUrl);

// E:/doppelt/test.txt


XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "//*[not(*)]";

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(file);
document.getDocumentElement().normalize();

NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);


for(int i = 0 ; i < nodeList.getLength(); i++) {

if(nodeList.item(i).getNodeName().contains("us-gaap") && nodeList.item(i).getTextContent().length() < 15) {

Habe dann hier abgesucht was us-gaap enthaelt.



Gruß

Axel Pfennig, Duesseldorf
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben