Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. public class XML {
  2.  
  3. private int rowNum = 0;
  4. private int columnNum = 0;
  5.  
  6. public XMLStreamReader xmlInput() {
  7.  
  8. XMLStreamReader reader = null;
  9.  
  10. try {
  11.  
  12. XMLInputFactory inputFactory = XMLInputFactory.newInstance();
  13. InputStream file = new FileInputStream(
  14. "Users/kevlar/Dropbox/PhD/Java/Metabolites/src/HMDB/HMDB00316.xml");
  15. reader = inputFactory.createXMLStreamReader(file);
  16.  
  17. } catch (XMLStreamException e) {
  18. System.err.println("XMLStreamException : " + e.getMessage());
  19.  
  20. } catch (FactoryConfigurationError e) {
  21. System.err.println("FactoryConfigurationError : " + e.getMessage());
  22.  
  23. } catch (FileNotFoundException e) {
  24. System.err.println("FileNotFoundException : " + e.getMessage());
  25.  
  26. }
  27. return reader;
  28. }
  29.  
  30. private void findElements(String input) throws XMLStreamException {
  31.  
  32. TreeNode[] children;
  33. Workbook wb = new HSSFWorkbook();
  34. Sheet sheet1 = wb.createSheet("Metabolites");
  35. String[] elementsSplit = input.split("\s*,\s*");
  36. xmlInput();
  37. XMLStreamReader reader = xmlInput();
  38. reader.nextTag();
  39.  
  40. do {
  41. if (reader.getEventType() == XMLStreamConstants.START_ELEMENT
  42. && reader.getLocalName() == "metabolite") {
  43. children = mainElements(reader).children();
  44.  
  45. printValues(children, elementsSplit, sheet1);
  46. children = null;
  47. } else {
  48. reader.next();
  49. }
  50. } while (reader.hasNext());
  51.  
  52. reader.close();
  53.  
  54. try {
  55. FileOutputStream output = new FileOutputStream("HMDB.xls");
  56. wb.write(output);
  57. output.close();
  58. } catch (Exception e) {
  59. e.printStackTrace();
  60. }
  61.  
  62. }
  63.  
  64. private void printValues(TreeNode[] children, String[] elementsSplit,
  65. Sheet sheet1) {
  66.  
  67. rowNum++;
  68. Row row = sheet1.createRow(rowNum);
  69. Cell cell = row.createCell(columnNum);
  70.  
  71. for (int i = 0; i < children.length; i++) {
  72. TreeNode element = children[i];
  73. String elementName = element.getElementName();
  74.  
  75. for (int j = 0; j < elementsSplit.length; j++) {
  76. String searchName = elementsSplit[j];
  77.  
  78. if (searchName.equals(elementName)) {
  79.  
  80. if (element.hasChildren()) {
  81. recurse(element.children(), cell);
  82. } else {
  83. columnNum++;
  84. cell.setCellValue(element.getElementValue());
  85. System.out.println("Element:- "
  86. + element.getElementName() + " | Value:- "
  87. + element.getElementValue());
  88. }
  89. }
  90. }
  91. }
  92.  
  93. cell = null;
  94. }
  95.  
  96. private void recurse(TreeNode[] children, Cell cell) {
  97.  
  98. for (int i = 0; i < children.length; i++) {
  99. TreeNode node = children[i];
  100. if (node.hasChildren()) {
  101. System.out.println("Element:- " + node.getElementName()
  102. + " and it's subelements:- ");
  103. recurse(node.children(), cell);
  104. }
  105.  
  106. else if (!node.hasChildren()) {
  107. columnNum++;
  108. cell.setCellValue(node.getElementValue());
  109. System.out.println("Element:- " + node.getElementName()
  110. + " | Value:- " + node.getElementValue());
  111. }
  112. }
  113. }
  114.  
  115. private TreeNode mainElements(XMLStreamReader reader)
  116. throws XMLStreamException {
  117.  
  118. Element rootElement = new Element();
  119. rootElement.setName(reader.getLocalName());
  120. TreeNode root = new TreeNode(rootElement);
  121.  
  122. int level = 1;
  123.  
  124. do {
  125. int event = reader.next();
  126.  
  127. if (event == XMLStreamConstants.START_ELEMENT) {
  128.  
  129. Element element = new Element();
  130. element.setName(reader.getLocalName());
  131. TreeNode node = new TreeNode(element);
  132. level++;
  133.  
  134. if (level == 2) {
  135. root.add(subElements(reader, node));
  136. level--;
  137.  
  138. }
  139.  
  140. } else if (event == XMLStreamConstants.END_ELEMENT) {
  141. level--;
  142. }
  143.  
  144. } while (level > 0);
  145.  
  146. return root;
  147. }
  148.  
  149. private TreeNode subElements(XMLStreamReader reader, TreeNode node)
  150. throws XMLStreamException {
  151.  
  152. int level = 1;
  153.  
  154. TreeNode newNode = new TreeNode();
  155. newNode = node;
  156.  
  157. do {
  158. int event = reader.next();
  159.  
  160. if (event == XMLStreamConstants.START_ELEMENT) {
  161.  
  162. Element subElement = new Element();
  163. subElement.setName(reader.getLocalName());
  164. TreeNode subNode = new TreeNode(subElement);
  165. level++;
  166.  
  167. if (level == 2) {
  168. newNode.add(subElements(reader, subNode));
  169. level--;
  170. }
  171.  
  172. } else if (event == XMLStreamConstants.CHARACTERS
  173. && !reader.isWhiteSpace()) {
  174.  
  175. newNode.getElement().setValue(reader.getText());
  176.  
  177. } else if (event == XMLStreamConstants.END_ELEMENT) {
  178. level--;
  179. }
  180.  
  181. } while (level > 0);
  182.  
  183. return newNode;
  184. }
  185.  
  186. public static void main(String[] args) throws XMLStreamException {
  187.  
  188. XML test = new XML();
  189. test.findElements("accession, inchikey");
  190.  
  191. }
  192.  
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement