//package it.tava.andbudget.data.parser;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import org.xmlpull.v1.XmlSerializer;
import android.util.Log;
import android.util.Xml;
public class XmlParser {
private final static String TAG = "it.tava.andbudget.xml.XmlParser";
private static final String JAXP = "http://java.sun.com/xml/jaxp/properties/";
private static final String JAXP_SCHEMA_LANGUAGE = JAXP + "schemaLanguage";
private static final String JAXP_SCHEMA_SOURCE = JAXP + "schemaSource";
private static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
/**
* Compila il file XML che viene passato come parametro e restituisce il Document DOM
* associato, null altrimenti.
*
* @param xml il file XML di cui effettuare il parsing
* @param xsd il file XSD schema associato all'XML in input
* @param validation se effettuare o meno la validazione del file ottenuto
* @return il Document DOM associato al file in ingresso o null altrimenti
*/
public static Document compileXml(File xml, File xsd, boolean validation) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validation);
factory.setNamespaceAware(true);
factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
factory.setAttribute(JAXP_SCHEMA_SOURCE, xsd);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(xml);
} catch (SAXException se) {
Log.e(TAG, "Error: compilation failed");
} catch (IOException ioe) {
Log.e(TAG, "Error: IOException");
} catch (ParserConfigurationException e) {
Log.e(TAG, "Error: ParserConfigurationException");
}
return document;
}
public static void updateXml(File xml, File xsd, Document document) {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
//Writer w = new FileWriter(new File("prova.xml"));
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "budget");
serializer.endTag("", "budget");
serializer.endDocument();
System.out.println(writer.toString());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}