XML Datentypen Parsen

benomatic

Grünschnabel
Code:
 <MyDoc>
 
 	<No>
	 	<INT>1</INT>
 	</No>
	<No>
	 	<Boolean>true</Boolean>
 	</No>


 </MyDoc>

Parser Klasse

Code:
import java.io.IOException;
import javax.xml.namespace.QName;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;



public class XMLParser {
	
	
	private String xmlFile;
	private Document xmlDocument;
	private XPath xPath;

	/*
	 *	Parser  
	 */
	public XMLParser(String xmlFile) {
		this.xmlFile = xmlFile;
		initObjects();
	}

	private void initObjects() {
		try {
			xmlDocument = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder().parse(xmlFile);
			xPath = XPathFactory.newInstance().newXPath();
		} catch (IOException ex) {
			ex.printStackTrace();
		} catch (SAXException ex) {
			ex.printStackTrace();
		} catch (ParserConfigurationException ex) {
			ex.printStackTrace();
		}
	}

	public Object read(String expression, QName returnType) {
		try {
			XPathExpression xPathExpression = xPath.compile(expression);
			return xPathExpression.evaluate(xmlDocument, returnType);
		} catch (XPathExpressionException ex) {
			ex.printStackTrace();
			return null;
		}
	}
}

Query Klasse mit der ich nach Parametern suche und Ausgebe

Code:
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.xml.xpath.XPathConstants;



public class XMLQuery {
	
	XMLParser parser;

	public XMLQuery() {
		parser = new XMLParser("src/res/files/roadmap.xml");
	}
	
	
	public  String getAction(int i){
		String expression = "/MyDoc/NO["+i+"]/IN";
		String integer = parser.read(expression, XPathConstants.STRING).toString();
		return integer ;
	}

	public static void main(String[] args) {

		XMLQuery q = new XMLQuery();
		q.getAction(22);
		q.getPath(2);
	}
}

So bekomme ich ja nur die Strings zurück, kann mir einer ein Tip geben wie ich das
als Integer und Boolischen Wert zurück bekomme.

Das Casten hat nicht funktionieren wollen, wie ich es auch gemacht habe, von String to Integer oder von Typ Object (XPathConstants.NUMBER) bekomme ich nicht zu Integer gecastet.

Danke für eure Hilfe,

gruss ben
 
Zuletzt bearbeitet:
Zurück