List of usage examples for org.jdom2.input SAXBuilder setFeature
public void setFeature(final String name, final boolean value)
From source file:de.intranda.goobi.plugins.sru.SRUHelper.java
License:Open Source License
public static Node parseGbvResult(GbvMarcSruImport opac, String catalogue, String schema, String searchField, String resultString, String packing, String version) throws IOException, JDOMException, ParserConfigurationException { // removed validation against external dtd SAXBuilder builder = new SAXBuilder(XMLReaders.NONVALIDATING); builder.setFeature("http://xml.org/sax/features/validation", false); builder.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); Document doc = builder.build(new StringReader(resultString), "utf-8"); // srw:searchRetrieveResponse Element record = getRecordWithoutSruHeader(doc); if (record == null) { opac.setHitcount(0);//from ww w .j av a 2s .c o m return null; } else { opac.setHitcount(1); // generate an answer document DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); org.w3c.dom.Document answer = docBuilder.newDocument(); org.w3c.dom.Element collection = answer.createElement("collection"); answer.appendChild(collection); boolean isMultiVolume = false; boolean isPeriodical = false; boolean isManuscript = false; boolean isCartographic = false; String anchorIdentifier = ""; List<Element> data = record.getChildren(); for (Element el : data) { if (el.getName().equalsIgnoreCase("leader")) { String value = el.getText(); if (value.length() < 24) { value = "00000" + value; } char c6 = value.toCharArray()[6]; char c7 = value.toCharArray()[7]; char c19 = value.toCharArray()[19]; if (c6 == 'a' && (c7 == 's' || c7 == 'd')) { isPeriodical = true; } else if (c6 == 't') { isManuscript = true; } else if (c6 == 'e') { isCartographic = true; } if (c19 == 'b' || c19 == 'c') { isMultiVolume = true; } } if (el.getName().equalsIgnoreCase("datafield")) { String tag = el.getAttributeValue("tag"); List<Element> subfields = el.getChildren(); for (Element sub : subfields) { String code = sub.getAttributeValue("code"); // anchor identifier if (tag.equals("773") && code.equals("w")) { if (!isMultiVolume && !isPeriodical) { sub.setText(""); } else { anchorIdentifier = sub.getText().replaceAll("\\(.+\\)", "").replace("KXP", ""); } } else if (tag.equals("800") && code.equals("w") && isMultiVolume) { anchorIdentifier = sub.getText().replaceAll("\\(.+\\)", "").replace("KXP", ""); } else if (isManuscript && tag.equals("810") && code.equals("w")) { isMultiVolume = true; anchorIdentifier = sub.getText().replaceAll("\\(.+\\)", "").replace("KXP", ""); } else if (tag.equals("830") && code.equals("w")) { if (isCartographic || (isMultiVolume && anchorIdentifier == null)) { anchorIdentifier = sub.getText().replaceAll("\\(.+\\)", "").replace("KXP", ""); } } } } } org.w3c.dom.Element marcRecord = getRecord(answer, data, opac); if (isMultiVolume) { String anchorResult = SRUHelper.search(catalogue, schema, searchField, anchorIdentifier, packing, version); Document anchorDoc = new SAXBuilder().build(new StringReader(anchorResult), "utf-8"); Element anchorRecord = getRecordWithoutSruHeader(anchorDoc); if (anchorRecord != null) { List<Element> anchorData = anchorRecord.getChildren(); org.w3c.dom.Element anchorMarcRecord = getRecord(answer, anchorData, opac); collection.appendChild(anchorMarcRecord); } } collection.appendChild(marcRecord); return answer.getDocumentElement(); } }
From source file:edu.ucsd.crbs.cws.workflow.WorkflowFromAnnotatedVersionTwoFourMomlXmlFactory.java
License:Open Source License
/** * Returns the root element of parsed XML document * * @param in XML document to parse//from w w w . ja v a2 s . co m * @return Root element of document * @throws Exception If there is a problem parsing the document */ private Document getDocument(InputStream in) throws Exception { SAXBuilder builder = new SAXBuilder(); builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); return builder.build(in); }
From source file:io.smartspaces.workbench.project.jdom.JdomReader.java
License:Apache License
/** * Get the root element for a given input file. * * @param inputFile// www. j a v a 2s . c om * input project file * * @return top-level element */ Element getRootElement(File inputFile) { Document doc; try { SAXBuilder builder = new SAXBuilder(); builder.setJDOMFactory(new LocatedJDOMFactory()); builder.setFeature(XML_PARSER_FEATURE_XINCLUDE, true); builder.setEntityResolver(new MyEntityResolver()); doc = builder.build(inputFile); } catch (Exception e) { throw new SmartSpacesException( String.format("Exception while processing %s", inputFile.getAbsolutePath()), e); } return doc.getRootElement(); }
From source file:jetbrains.buildServer.tools.XmlUtil.java
License:Apache License
@NotNull private static SAXBuilder getBuilder(final boolean validate) { SAXBuilder builder = new SAXBuilder(validate); builder.setFeature("http://xml.org/sax/features/namespaces", true); builder.setFeature("http://xml.org/sax/features/namespace-prefixes", true); builder.setEntityResolver(new DefaultHandler() { @Override//from ww w. j a va 2s . c o m public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException { String dtdFileName = new File(systemId).getName(); InputStream dtdStream = getClass().getClassLoader().getResourceAsStream(dtdFileName); if (dtdStream != null) { return new InputSource(dtdStream); } return super.resolveEntity(publicId, systemId); } }); return builder; }
From source file:jodtemplate.util.JDOMHelper.java
License:Apache License
private SAXBuilder getJDomBuilder() { final SAXBuilder jdomBuilder = new SAXBuilder(); jdomBuilder.setJDOMFactory(new SlimJDOMFactory()); jdomBuilder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); return jdomBuilder; }
From source file:org.artifactory.util.XmlUtils.java
License:Open Source License
public static SAXBuilder createSaxBuilder() { SAXBuilder sb = new SAXBuilder(); // don't validate and don't load dtd sb.setXMLReaderFactory(XMLReaders.NONVALIDATING); sb.setFeature("http://xml.org/sax/features/validation", false); sb.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); sb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); // JNLP needs DOCTYPE //sb.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); sb.setFeature("http://xml.org/sax/features/external-general-entities", false); sb.setFeature("http://xml.org/sax/features/external-parameter-entities", false); return sb;/*ww w .j a va 2 s.c o m*/ }
From source file:org.buddycloud.channelserver.XMPPAcceptanceTestHelper.java
License:Apache License
private Object getEl(Packet p, String xPath, boolean namespaceFeature) throws Exception { InputStream xmlStream = IOUtils.toInputStream(p.toXML()); SAXBuilder saxBuilder = new SAXBuilder(); saxBuilder.setFeature("http://xml.org/sax/features/namespaces", namespaceFeature); saxBuilder.setFeature("http://xml.org/sax/features/validation", false); saxBuilder.setFeature("http://xml.org/sax/features/namespace-prefixes", false); Document replyDoc = (Document) saxBuilder.build(xmlStream); return XPathFactory.instance().compile(xPath).evaluateFirst(replyDoc); }
From source file:org.jahia.utils.osgi.parsers.AbstractXmlFileParser.java
License:Open Source License
public boolean parse(String fileName, InputStream inputStream, String fileParent, boolean externalDependency, boolean optionalDependency, String version, ParsingContext parsingContext) { boolean processed = true; SAXBuilder saxBuilder = new SAXBuilder(); saxBuilder.setValidation(false);//from www . j a va 2s . c o m saxBuilder.setFeature("http://xml.org/sax/features/validation", false); saxBuilder.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); saxBuilder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); InputStream inputStreamCopy = null; try { ByteArrayOutputStream entryOutputStream = new ByteArrayOutputStream(); IOUtils.copy(inputStream, entryOutputStream); inputStreamCopy = new ByteArrayInputStream(entryOutputStream.toByteArray()); InputStreamReader fileReader = new InputStreamReader(inputStreamCopy); org.jdom2.Document jdomDocument = saxBuilder.build(fileReader); Element rootElement = jdomDocument.getRootElement(); // getLog().debug("Parsed XML file" + fileName + " successfully."); if (canParse(fileName, rootElement)) { parse(fileName, rootElement, fileParent, externalDependency, optionalDependency, version, parsingContext); } else { processed = false; } } catch (JDOMException e) { getLogger().warn("Error parsing XML file " + fileName + ": " + e.getMessage() + " enable debug mode (-X) for more detailed exception"); getLogger().debug("Detailed exception", e); } catch (IOException e) { getLogger().warn("Error parsing XML file " + fileName + ": " + e.getMessage() + " enable debug mode (-X) for more detailed exception"); getLogger().debug("Detailed exception", e); } finally { IOUtils.closeQuietly(inputStreamCopy); } return processed; }
From source file:org.jumpmind.metl.core.runtime.component.XmlFormatter.java
License:Open Source License
private Document getTemplateDoc() { Document templateDoc = null;/*from www.j a v a2s. com*/ SAXBuilder builder = new SAXBuilder(); builder.setXMLReaderFactory(XMLReaders.NONVALIDATING); builder.setFeature("http://xml.org/sax/features/validation", false); try { templateDoc = builder.build(new StringReader(resolveFlowParams(template))); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } return templateDoc; }
From source file:org.jumpmind.metl.core.runtime.component.XmlParser.java
License:Open Source License
@SuppressWarnings("unchecked") protected void handleUsingXPath(Message inputMessage, ISendMessageCallback callback, boolean unitOfWorkBoundaryReached) { ArrayList<String> inputRows = ((TextMessage) inputMessage).getPayload(); ArrayList<EntityData> payload = new ArrayList<EntityData>(); if (inputRows != null) { for (String xml : inputRows) { SAXBuilder builder = new SAXBuilder(); builder.setXMLReaderFactory(XMLReaders.NONVALIDATING); builder.setFeature("http://xml.org/sax/features/validation", false); try { Document document = builder.build(new StringReader(xml)); removeNamespaces(document); for (XmlFormatterEntitySetting entitySetting : entitySettings) { List<XmlFormatterAttributeSetting> attributeSettings = entitySetting.getAttributeSettings(); List<Element> entityMatches = (List<Element>) entitySetting.getExpression() .evaluate(document.getRootElement()); for (Element element : entityMatches) { String text = toXML(element); Document childDocument = builder .build(new ByteArrayInputStream(text.getBytes(Charset.forName("utf-8")))); getComponentStatistics().incrementNumberEntitiesProcessed(threadNumber); EntityData data = new EntityData(); for (XmlFormatterAttributeSetting attributeSetting : attributeSettings) { boolean resultsFound = false; Element targetElement = element; Document targetDocument = childDocument; do { List<Object> attributeMatches = (List<Object>) attributeSetting.getExpression() .evaluate(targetDocument); for (Object object : attributeMatches) { resultsFound = true; if (object instanceof Attribute) { data.put(attributeSetting.getSetting().getAttributeId(), ((Attribute) object).getValue()); } else if (object instanceof Content) { data.put(attributeSetting.getSetting().getAttributeId(), ((Content) object).getValue()); } else if (object instanceof Element) { data.put(attributeSetting.getSetting().getAttributeId(), ((Element) object).getTextTrim()); }//from www.j a v a 2s . c o m } if (!resultsFound && !attributeSetting.getExpression().getExpression() .startsWith("/" + element.getName()) && targetElement.getParentElement() != null) { targetElement = targetElement.getParentElement(); targetDocument = builder.build(new ByteArrayInputStream( toXML(targetElement).getBytes(Charset.forName("utf-8")))); } else if (!resultsFound) { info("Did not find a match for: %s\n in:\n %s", attributeSetting.getExpression().getExpression(), text); targetDocument = null; targetElement = null; } } while (!resultsFound && targetElement != null); } if (data.size() > 0) { payload.add(data); } else { log(LogLevel.WARN, "Found entity element: <%s/> with no matching attributes. Please make sure your xpath expressions match", element.getName()); } } } if (payload.size() > rowsPerMessage) { callback.sendEntityDataMessage(null, payload); payload = new ArrayList<>(); } } catch (Exception e) { throw new RuntimeException(e); } } } if (payload.size() > 0) { callback.sendEntityDataMessage(null, payload); } }