einfach XML lesen

Diskutiere einfach XML lesen im XML und Co. Bereich.
C

crsh

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.
 
D

Darano

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;
}
 
P

ProChris

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
 
N

Nummer6800

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
 
Thema: 

einfach XML lesen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben