package com.jqmobile.core.utils.xml.impl;
import java.io.File;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import com.jqmobile.core.utils.plain.Log;
import com.jqmobile.core.utils.xml.IXMLDocument;
import com.jqmobile.core.utils.xml.IXMLNode;
class XMLParse implements IXMLDocument{
// private DefaultHandler handler = new DefaultHandler();
private Document doc;
private final DocumentBuilder builder;
public XMLParse(String url) throws ParserConfigurationException, FactoryConfigurationError {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
try{
doc = builder.parse(url);//.newDocument();
// SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
// DocumentHelper.parseText(text);
// parser.parse(url, handler);
}catch(Exception e){
Log.getLog(getClass()).e(e);
}
}
public XMLParse(InputStream inputStream) throws ParserConfigurationException, FactoryConfigurationError {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
try{
doc = builder.parse(inputStream);
}catch(Exception e){
Log.getLog(getClass()).e(e);
}
}
public XMLParse(File file) throws ParserConfigurationException, FactoryConfigurationError {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
try{
doc = builder.parse(file);
}catch(Exception e){
Log.getLog(getClass()).e(e);
}
}
public XMLParse(InputSource inputSource) throws ParserConfigurationException, FactoryConfigurationError {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
try{
doc = builder.parse(inputSource);
}catch(Exception e){
Log.getLog(getClass()).e(e);
}
}
@Override
public IXMLNode getRootNode() {
Node root = doc.getChildNodes().item(0);
return new XMLNode(doc, root);
}
//
@Override
public IXMLNode createRootNode(String nodeName) {
Element root = doc.createElement(nodeName);
doc.appendChild(root);
return new XMLNode(doc, root);
}
}