Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class XML {
- private int rowNum = 0;
- private int columnNum = 0;
- public XMLStreamReader xmlInput() {
- XMLStreamReader reader = null;
- try {
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- InputStream file = new FileInputStream(
- "Users/kevlar/Dropbox/PhD/Java/Metabolites/src/HMDB/HMDB00316.xml");
- reader = inputFactory.createXMLStreamReader(file);
- } catch (XMLStreamException e) {
- System.err.println("XMLStreamException : " + e.getMessage());
- } catch (FactoryConfigurationError e) {
- System.err.println("FactoryConfigurationError : " + e.getMessage());
- } catch (FileNotFoundException e) {
- System.err.println("FileNotFoundException : " + e.getMessage());
- }
- return reader;
- }
- private void findElements(String input) throws XMLStreamException {
- TreeNode[] children;
- Workbook wb = new HSSFWorkbook();
- Sheet sheet1 = wb.createSheet("Metabolites");
- String[] elementsSplit = input.split("\s*,\s*");
- xmlInput();
- XMLStreamReader reader = xmlInput();
- reader.nextTag();
- do {
- if (reader.getEventType() == XMLStreamConstants.START_ELEMENT
- && reader.getLocalName() == "metabolite") {
- children = mainElements(reader).children();
- printValues(children, elementsSplit, sheet1);
- children = null;
- } else {
- reader.next();
- }
- } while (reader.hasNext());
- reader.close();
- try {
- FileOutputStream output = new FileOutputStream("HMDB.xls");
- wb.write(output);
- output.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void printValues(TreeNode[] children, String[] elementsSplit,
- Sheet sheet1) {
- rowNum++;
- Row row = sheet1.createRow(rowNum);
- Cell cell = row.createCell(columnNum);
- for (int i = 0; i < children.length; i++) {
- TreeNode element = children[i];
- String elementName = element.getElementName();
- for (int j = 0; j < elementsSplit.length; j++) {
- String searchName = elementsSplit[j];
- if (searchName.equals(elementName)) {
- if (element.hasChildren()) {
- recurse(element.children(), cell);
- } else {
- columnNum++;
- cell.setCellValue(element.getElementValue());
- System.out.println("Element:- "
- + element.getElementName() + " | Value:- "
- + element.getElementValue());
- }
- }
- }
- }
- cell = null;
- }
- private void recurse(TreeNode[] children, Cell cell) {
- for (int i = 0; i < children.length; i++) {
- TreeNode node = children[i];
- if (node.hasChildren()) {
- System.out.println("Element:- " + node.getElementName()
- + " and it's subelements:- ");
- recurse(node.children(), cell);
- }
- else if (!node.hasChildren()) {
- columnNum++;
- cell.setCellValue(node.getElementValue());
- System.out.println("Element:- " + node.getElementName()
- + " | Value:- " + node.getElementValue());
- }
- }
- }
- private TreeNode mainElements(XMLStreamReader reader)
- throws XMLStreamException {
- Element rootElement = new Element();
- rootElement.setName(reader.getLocalName());
- TreeNode root = new TreeNode(rootElement);
- int level = 1;
- do {
- int event = reader.next();
- if (event == XMLStreamConstants.START_ELEMENT) {
- Element element = new Element();
- element.setName(reader.getLocalName());
- TreeNode node = new TreeNode(element);
- level++;
- if (level == 2) {
- root.add(subElements(reader, node));
- level--;
- }
- } else if (event == XMLStreamConstants.END_ELEMENT) {
- level--;
- }
- } while (level > 0);
- return root;
- }
- private TreeNode subElements(XMLStreamReader reader, TreeNode node)
- throws XMLStreamException {
- int level = 1;
- TreeNode newNode = new TreeNode();
- newNode = node;
- do {
- int event = reader.next();
- if (event == XMLStreamConstants.START_ELEMENT) {
- Element subElement = new Element();
- subElement.setName(reader.getLocalName());
- TreeNode subNode = new TreeNode(subElement);
- level++;
- if (level == 2) {
- newNode.add(subElements(reader, subNode));
- level--;
- }
- } else if (event == XMLStreamConstants.CHARACTERS
- && !reader.isWhiteSpace()) {
- newNode.getElement().setValue(reader.getText());
- } else if (event == XMLStreamConstants.END_ELEMENT) {
- level--;
- }
- } while (level > 0);
- return newNode;
- }
- public static void main(String[] args) throws XMLStreamException {
- XML test = new XML();
- test.findElements("accession, inchikey");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement