private void processAliasFile(File aliasesFile, Set<String> validClasses) throws ContentFileProcessingException, XMLStreamException, FileNotFoundException, IOException, NamespaceException { XMLStreamReader2 streamReader = null; try (FileReader fileReader = new FileReader(aliasesFile)) { streamReader = (XMLStreamReader2) inputFactory.createXMLStreamReader(fileReader); AliasProcessor aliasProcessor = new AliasProcessor(this, streamReader, aliasesFile, validClasses); if (aliasesFile.getName().equals("aliasDefinitions.xml")) { streamReader.validateAgainst(aliasDefinitionsSchema); aliasProcessor.processAliasDefinitionsFile(); } else { streamReader.validateAgainst(aliasSchema); aliasProcessor.processAliasesFile(); } } catch (WstxValidationException e) { Location location = e.getLocation(); throw new ContentFileProcessingException( aliasesFile, location.getLineNumber(), location.getColumnNumber(), e.getMessage()); } finally { streamReader.close(); } }
public MetadataRecord fromXml(String recordContents) throws XMLStreamException { String recordString = createCompleteRecordString(recordContents); try { Reader reader = new StringReader(recordString); XMLStreamReader2 input = (XMLStreamReader2) inputFactory.createXMLStreamReader(reader); GroovyNode rootNode = null, node = null; StringBuilder value = new StringBuilder(); while (true) { switch (input.getEventType()) { case XMLEvent.START_DOCUMENT: break; case XMLEvent.START_ELEMENT: if (node == null) { rootNode = node = new GroovyNode(null, "input"); } else { node = new GroovyNode( node, input.getNamespaceURI(), input.getLocalName(), input.getPrefix()); } if (input.getAttributeCount() > 0) { for (int walk = 0; walk < input.getAttributeCount(); walk++) { QName attributeName = input.getAttributeName(walk); node.attributes() .put(attributeName.getLocalPart(), input.getAttributeValue(walk)); } } value.setLength(0); break; case XMLEvent.CHARACTERS: case XMLEvent.CDATA: value.append(input.getText()); break; case XMLEvent.END_ELEMENT: if (node == null) { throw new RuntimeException("Node cannot be null"); } String valueString = sanitize(value.toString()); value.setLength(0); if (valueString.length() > 0) { node.setValue(valueString); } node = node.parent(); break; case XMLEvent.END_DOCUMENT: { break; } } if (!input.hasNext()) { break; } input.next(); } return new MetadataRecord(rootNode, -1, -1); } catch (WstxParsingException e) { throw new XMLStreamException("Problem parsing record:\n" + recordString, e); } }
/** * Parses the whole ESummaryResult XML object, delivering a List of ESummaryResults. * * @param in the input stream through which the response the response can be read. * @return multimap with the mappings from the XML. * @throws javax.xml.stream.XMLStreamException */ public List<T> parseESummaryResult(InputStream in) throws XMLStreamException { XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance(); xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE); xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.TRUE); xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); xmlif.configureForSpeed(); XMLStreamReader2 xmlr = (XMLStreamReader2) xmlif.createXMLStreamReader(in); int event; List<T> results = new ArrayList<T>(); T currentResult = getNewESummaryResult(); while (xmlr.hasNext()) { event = xmlr.next(); switch1: switch (event) { case XMLEvent.START_DOCUMENT: break; case XMLEvent.START_ELEMENT: // LOGGER.info("Start Element: "+xmlr.getLocalName()); // LOGGER.info("Attributes: "+getAttributes(xmlr)); if (xmlr.getLocalName().equalsIgnoreCase("Item")) { boolean done = false; for (Enum keyword : currentResult.getScalarKeywords()) { if (hasAttributeNameWithValue(xmlr, keyword.toString())) { // LOGGER.info("Entering addScalarForKeyword: "+keyword.toString()+" for // "+xmlr.getLocalName()); currentResult.addScalarForKeyword(keyword, getFollowingCharacters(xmlr)); break switch1; } } for (Enum keyword : currentResult.getListKeywords()) { if (hasAttributeNameWithValue(xmlr, keyword.toString())) { // LOGGER.info("Entering addListForKeyword: "+keyword.toString()+" for // "+xmlr.getLocalName()); currentResult.addListForKeyword(keyword, parseList(xmlr)); break switch1; } } } if (xmlr.getLocalName().equalsIgnoreCase("Id")) { for (Enum keyword : currentResult.getScalarKeywords()) { if (keyword.toString().equalsIgnoreCase("Id")) { currentResult.addScalarForKeyword(keyword, getFollowingCharacters(xmlr)); break switch1; } } } /* if (xmlr.getLocalName().equalsIgnoreCase("Item") && hasAttributeNameWithValue(xmlr, "SID")) { currentResult.setId(getFollowingCharacters(xmlr)); } else if (xmlr.getLocalName().equalsIgnoreCase("Item") && hasAttributeNameWithValue(xmlr, "SourceNameList")) { currentResult.setSourceNames(parseList(xmlr)); } else if (xmlr.getLocalName().equalsIgnoreCase("Item") && hasAttributeNameWithValue(xmlr, "SourceID")) { currentResult.addSourceID(getFollowingCharacters(xmlr)); } else if (xmlr.getLocalName().equalsIgnoreCase("Item") && hasAttributeNameWithValue(xmlr, "DBUrl")) { currentResult.setDBUrl(getFollowingCharacters(xmlr)); } else if (xmlr.getLocalName().equalsIgnoreCase("Item") && hasAttributeNameWithValue(xmlr, "SynonymList")) { currentResult.setSynonyms(parseList(xmlr)); }*/ break; case XMLEvent.END_ELEMENT: // LOGGER.info("End Element: "+xmlr.getLocalName()); if (xmlr.getLocalName().equalsIgnoreCase("DocSum")) { currentResult.wrap(); results.add(currentResult); currentResult = getNewESummaryResult(); } break; } } xmlr.closeCompletely(); return results; }