/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.co.md87.evetool.api.parser;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/**
*
* @author chris
*/
public class ApiParser {
public ApiResult parseResult(final String data) throws IOException, JDOMException,
ParserException {
return parseResult(new SAXBuilder().build(new StringReader(data)));
}
public ApiResult parseResult(final Document doc) throws IOException, JDOMException,
ParserException {
final Element root = doc.getRootElement();
if (!"eveapi".equals(root.getName())) {
throw new ParserException("Unexpected response; root element is not ");
}
final ApiResult result = new ApiResult();
addElements(result, root);
return result;
}
@SuppressWarnings("unchecked")
protected void addElements(final ApiElement result, final Element element) {
for (Element child : (List) element.getChildren()) {
final ApiElement apiElement = new NamedApiElement(child.getName());
// TODO: Parse rowsets correctly
// TODO: Include content and attributes
result.addChild(apiElement);
addElements(apiElement, child);
}
}
}