List of usage examples for org.w3c.dom Node getParentNode
public Node getParentNode();
From source file:org.opens.tanaguru.crawler.util.HeritrixAttributeValueModifier.java
@Override public Document modifyDocument(Document document, String value) { if (value == null || value.isEmpty()) { return document; }// w ww. j a v a 2 s . c o m try { Node parentNode = getNodeFromXpath(document); NamedNodeMap attr = parentNode.getAttributes(); Node nodeAttr = attr.getNamedItem(DEFAULT_ATTRIBUTE_NAME); if (StringUtils.isNotEmpty(value)) { nodeAttr.setTextContent(value); } else { parentNode.getParentNode().removeChild(parentNode); } if (LOGGER.isDebugEnabled()) { LOGGER.debug("Update " + getAttributeValue() + " attribute of bean " + getIdBeanParent() + " with value " + value); } } catch (XPathExpressionException ex) { LOGGER.warn(ex); } return document; }
From source file:org.osaf.cosmo.xml.DomReader.java
private static Node readNode(Document d, XMLStreamReader reader) throws XMLStreamException { Node root = null;//from w ww.j a va 2s .c o m Node current = null; while (reader.hasNext()) { reader.next(); if (reader.isEndElement()) { //log.debug("Finished reading " + current.getNodeName()); if (current.getParentNode() == null) break; //log.debug("Setting current to " + //current.getParentNode().getNodeName()); current = current.getParentNode(); } if (reader.isStartElement()) { Element e = readElement(d, reader); if (root == null) { //log.debug("Setting root to " + e.getNodeName()); root = e; } if (current != null) { //log.debug("Appending child " + e.getNodeName() + " to " + //current.getNodeName()); current.appendChild(e); } //log.debug("Setting current to " + e.getNodeName()); current = e; continue; } if (reader.isCharacters()) { CharacterData cd = d.createTextNode(reader.getText()); if (root == null) return cd; if (current == null) return cd; //log.debug("Appending text '" + cd.getData() + "' to " + //current.getNodeName()); current.appendChild(cd); continue; } } return root; }
From source file:org.pentaho.di.www.CarteIT.java
public static Node findTextNode(Node parent, String parentNodeName) { List<Node> nodes = flatten(parent, null); for (Node node : nodes) { if (node.getNodeType() == Node.TEXT_NODE && node.getParentNode().getNodeName().equalsIgnoreCase(parentNodeName)) { return node; }//from w w w .j ava 2 s. c om } return null; }
From source file:org.pentaho.di.www.CarteIT.java
public static void print(Node node, String indent) { // System.out.println(indent + node.getClass().getName()); if (node.getNodeType() == Node.TEXT_NODE && !StringUtils.isEmpty(node.getTextContent().trim())) { System.out.println(node.getParentNode().getNodeName()); System.out.println(node.getNodeName() + node.getTextContent()); }/* w w w. j a va 2 s. co m*/ Node child = node.getFirstChild(); while (child != null) { print(child, indent + " "); child = child.getNextSibling(); } }
From source file:org.pentaho.platform.plugin.services.importexport.MondrianImportHandler.java
private String getDatasourcesXMLDatasourceInfo(ImportSource.IRepositoryFileBundle datasourcesXML, ImportSource.IRepositoryFileBundle file) throws Exception { String datasourceInfo = null; if (datasourcesXML != null) { final String fullFileName = RepositoryFilenameUtils.separatorsToRepository( RepositoryFilenameUtils.concat(file.getPath(), file.getFile().getName())); final NodeList mondrianDefinitions = getElementsByTagName(datasourcesXML, "Definition"); for (int i = 0; i < mondrianDefinitions.getLength(); i++) { final Node mondrianDefinition = mondrianDefinitions.item(i); if (mondrianDefinition.getTextContent().contains(fullFileName)) { Node datasourceInfoNode = null; final NodeList nodeList = mondrianDefinition.getParentNode().getChildNodes(); for (int j = 0; j < mondrianDefinitions.getLength(); j++) { datasourceInfoNode = nodeList.item(j); if (datasourceInfoNode.getNodeName().equals("DataSourceInfo")) { break; } else { datasourceInfoNode = null; }//from www .j a va 2s. c o m } if (datasourceInfoNode == null || !datasourceInfoNode.getNodeName().equals("DataSourceInfo")) { throw new Exception("<DataSourceInfo> not found in datasources.xml for <Definition> " + mondrianDefinition.getTextContent()); } datasourceInfo = datasourceInfoNode.getTextContent(); break; } } } return datasourceInfo; }
From source file:org.rdswicthboard.utils.rdf.oai.App.java
public static void main(String[] args) { // create the command line parser CommandLineParser parser = new DefaultParser(); // create the Options Options options = new Options(); options.addOption("i", PROPERTY_INPUT_FILE, true, "input RDF file"); options.addOption("o", PROPERTY_OUTPUT_FILE, true, "output OAI-PMH XML file (default is " + DEFAULT_OUTPUT_FILE + ")"); options.addOption("c", PROPERTY_CONFIG_FILE, true, "configuration file (" + PROPERTIES_FILE + ")"); options.addOption("s", PROPERTY_SET_SPEC, true, "set spec value (default is " + DEFAULT_SET_SPEC + ")"); options.addOption("I", PROPERTY_INPUT_ENCODING, true, "input file encoding (default is " + DEFAULT_ENCODING + ")"); options.addOption("O", PROPERTY_OUTPUT_ENCODING, true, "output file encoding (default is " + DEFAULT_ENCODING + ")"); options.addOption("f", PROPERTY_FORMAT_OUTPUT, false, "format output encoding"); options.addOption("h", PROPERTY_HELP, false, "print this message"); try {// w ww . ja v a 2 s.c o m // parse the command line arguments CommandLine line = parser.parse(options, args); if (line.hasOption(PROPERTY_HELP)) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("java -jar rdf2oai-[verion].jar [PARAMETERS] [INPUT FILE] [OUTPUT FILE]", options); System.exit(0); } // variables to store program properties CompositeConfiguration config = new CompositeConfiguration(); config.setProperty(PROPERTY_OUTPUT_FILE, DEFAULT_OUTPUT_FILE); config.setProperty(PROPERTY_INPUT_ENCODING, DEFAULT_ENCODING); config.setProperty(PROPERTY_OUTPUT_ENCODING, DEFAULT_ENCODING); config.setProperty(PROPERTY_SET_SPEC, DEFAULT_SET_SPEC); config.setProperty(PROPERTY_FORMAT_OUTPUT, DEFAULT_FORMAT_OUTPUT); // check if arguments has input file properties if (line.hasOption(PROPERTY_CONFIG_FILE)) { // if it does, load the specified configuration file Path defaultConfig = Paths.get(line.getOptionValue(PROPERTY_CONFIG_FILE)); if (Files.isRegularFile(defaultConfig) && Files.isReadable(defaultConfig)) { config.addConfiguration(new PropertiesConfiguration(defaultConfig.toFile())); } else throw new Exception("Invalid configuration file: " + defaultConfig.toString()); } else { // if it not, try to load default configurationfile Path defaultConfig = Paths.get(PROPERTIES_FILE); if (Files.isRegularFile(defaultConfig) && Files.isReadable(defaultConfig)) { config.addConfiguration(new PropertiesConfiguration(defaultConfig.toFile())); } } // check if arguments has input file if (line.hasOption(PROPERTY_INPUT_FILE)) config.setProperty(PROPERTY_INPUT_FILE, line.getOptionValue(PROPERTY_INPUT_FILE)); // check if arguments has output file if (line.hasOption(PROPERTY_OUTPUT_FILE)) config.setProperty(PROPERTY_OUTPUT_FILE, line.getOptionValue(PROPERTY_OUTPUT_FILE)); // check if arguments has set spec name if (line.hasOption(PROPERTY_SET_SPEC)) config.setProperty(PROPERTY_SET_SPEC, line.getOptionValue(PROPERTY_SET_SPEC)); // check if arguments has input encoding if (line.hasOption(PROPERTY_INPUT_ENCODING)) config.setProperty(PROPERTY_INPUT_ENCODING, line.getOptionValue(PROPERTY_INPUT_ENCODING)); // check if arguments has output encoding if (line.hasOption(PROPERTY_OUTPUT_ENCODING)) config.setProperty(PROPERTY_OUTPUT_ENCODING, line.getOptionValue(PROPERTY_OUTPUT_ENCODING)); // check if arguments has output encoding if (line.hasOption(PROPERTY_FORMAT_OUTPUT)) config.setProperty(PROPERTY_FORMAT_OUTPUT, "yes"); // check if arguments has input file without a key if (line.getArgs().length > 0) { config.setProperty(PROPERTY_INPUT_FILE, line.getArgs()[0]); // check if arguments has output file without a key if (line.getArgs().length > 1) { config.setProperty(PROPERTY_OUTPUT_FILE, line.getArgs()[1]); // check if there is too many arguments if (line.getArgs().length > 2) throw new Exception("Too many arguments"); } } // The program has default output file, but input file must be presented if (!config.containsKey(PROPERTY_INPUT_FILE)) throw new Exception("Please specify input file"); // extract input file String inputFile = config.getString(PROPERTY_INPUT_FILE); // extract output file String outputFile = config.getString(PROPERTY_OUTPUT_FILE); // extract set spec String setSpecName = config.getString(PROPERTY_SET_SPEC); // extract encoding String inputEncoding = config.getString(PROPERTY_INPUT_ENCODING); String outputEncoding = config.getString(PROPERTY_OUTPUT_ENCODING); boolean formatOutput = config.getBoolean(PROPERTY_FORMAT_OUTPUT); // test if source is an regular file and it is readable Path source = Paths.get(inputFile); if (!Files.isRegularFile(source)) throw new Exception("The input file: " + source.toString() + " is not an regular file"); if (!Files.isReadable(source)) throw new Exception("The input file: " + source.toString() + " is not readable"); Path target = Paths.get(outputFile); if (Files.exists(target)) { if (!Files.isRegularFile(target)) throw new Exception("The output file: " + target.toString() + " is not an regular file"); if (!Files.isWritable(target)) throw new Exception("The output file: " + target.toString() + " is not writable"); } // create and setup document builder factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); // create new document builder DocumentBuilder builder = factory.newDocumentBuilder(); // create oai document Document oai = builder.newDocument(); // set document version oai.setXmlVersion("1.0"); oai.setXmlStandalone(true); // create root OAI-PMH element Element oaiPmh = oai.createElement("OAI-PMH"); // set document namespaces oaiPmh.setAttribute("xmlns", "http://www.openarchives.org/OAI/2.0/"); oaiPmh.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); oaiPmh.setAttribute("xsi:schemaLocation", "http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"); // append root node oai.appendChild(oaiPmh); // create responseDate element Element responseDate = oai.createElement("responseDate"); // create simple date format DateFormat dateFormat = new SimpleDateFormat(TIME_FORMAT); // generate date String date = dateFormat.format(new Date()); // set current date and time responseDate.setTextContent(date); oaiPmh.appendChild(responseDate); Element listRecords = oai.createElement("ListRecords"); oaiPmh.appendChild(listRecords); // create xpath factory XPathFactory xPathfactory = XPathFactory.newInstance(); // create namespace context NamespaceContext namespaceContext = new NamespaceContext() { public String getNamespaceURI(String prefix) { if (prefix.equals("rdf")) return RDF_NAMESPACE; else if (prefix.equals("rns")) return RNF_NAMESPACE; else return null; } @Override public Iterator<?> getPrefixes(String val) { throw new IllegalAccessError("Not implemented!"); } @Override public String getPrefix(String uri) { throw new IllegalAccessError("Not implemented!"); } }; // create xpath object XPath xpath = xPathfactory.newXPath(); // set namespace contex xpath.setNamespaceContext(namespaceContext); // create XPath expressions XPathExpression idExpr = xpath.compile("/rdf:RDF/rns:Researcher/@rdf:about"); XPathExpression emptyExpr = xpath.compile("//text()[normalize-space(.) = '']"); // create RegEx patterns Pattern pattern = Pattern.compile( "<\\?xml\\s+version=\"[\\d\\.]+\"\\s*\\?>\\s*<\\s*rdf:RDF[^>]*>[\\s\\S]*?<\\s*\\/\\s*rdf:RDF\\s*>"); // read file into a string String content = new String(Files.readAllBytes(source), inputEncoding); Matcher matcher = pattern.matcher(content); // process all records while (matcher.find()) { // convert string to input stream ByteArrayInputStream input = new ByteArrayInputStream( matcher.group().getBytes(StandardCharsets.UTF_8.toString())); // parse the xml document Document doc = builder.parse(input); // remove all spaces NodeList emptyNodes = (NodeList) emptyExpr.evaluate(doc, XPathConstants.NODESET); // Remove each empty text node from document. for (int i = 0; i < emptyNodes.getLength(); i++) { Node emptyTextNode = emptyNodes.item(i); emptyTextNode.getParentNode().removeChild(emptyTextNode); } // obtain researcher id String id = (String) idExpr.evaluate(doc, XPathConstants.STRING); if (StringUtils.isEmpty(id)) throw new Exception("The record identifier can not be empty"); // create record element Element record = oai.createElement("record"); listRecords.appendChild(record); // create header element Element header = oai.createElement("header"); record.appendChild(header); // create identifier element Element identifier = oai.createElement("identifier"); identifier.setTextContent(id); header.appendChild(identifier); // create datestamp element Element datestamp = oai.createElement("datestamp"); datestamp.setTextContent(date); header.appendChild(datestamp); // create set spec element if it exists if (!StringUtils.isEmpty(setSpecName)) { Element setSpec = oai.createElement("setSpec"); setSpec.setTextContent(setSpecName); header.appendChild(setSpec); } // create metadata element Element metadata = oai.createElement("metadata"); record.appendChild(metadata); // import the record metadata.appendChild(oai.importNode(doc.getDocumentElement(), true)); } // create transformer factory TransformerFactory transformerFactory = TransformerFactory.newInstance(); // create transformer Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, outputEncoding); if (formatOutput) { transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); } else transformer.setOutputProperty(OutputKeys.INDENT, "no"); // create dom source DOMSource oaiSource = new DOMSource(oai); // create stream result StreamResult result = new StreamResult(target.toFile()); // stream xml to file transformer.transform(oaiSource, result); // optional stream xml to console for testing //StreamResult consoleResult = new StreamResult(System.out); //transformer.transform(oaiSource, consoleResult); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); //e.printStackTrace(); System.exit(1); } }
From source file:org.regenstrief.util.XMLUtil.java
/** * Retrieves the closest ancestor Node with the specified name above the given Node * //from www. j ava 2s. c o m * @param node the Node for which to seek an ancestor * @param nodename the ancestor Node name * @return the ancestor Node **/ public final static Node getAncestor(Node node, final String nodename) { while ((node != null) && !equalsNameOrQualifiedName(node.getNodeName(), nodename)) { node = node.getParentNode(); } return node; }
From source file:org.regenstrief.util.XMLUtil.java
/** * Retrieves the namespace for the given Node and prefix * /*from ww w. j a v a 2 s .c o m*/ * @param n the the Node * @param xmlnsPlusPrefix the xmlns[:<prefix>] String * @return the namespace String **/ private final static String getNamespaceURIIntern(final Node n, final String xmlnsPlusPrefix) { if (n == null) { return null; } final String prefix = getPrefix(n); if (prefix == null ? (xmlnsPlusPrefix.length() == 5) : (xmlnsPlusPrefix.endsWith(prefix) && (xmlnsPlusPrefix.charAt(5) == ':'))) { final String namespaceURI = n.getNamespaceURI(); if (namespaceURI != null) { return namespaceURI; } //if (n instanceof Attr) //{ return NAMESPACE_URI_XMLNS; //} } if (!(n instanceof Element) || ((n instanceof Element) && Util.isEmpty(((Element) n).getAttribute(xmlnsPlusPrefix)))) { return getNamespaceURIIntern(n.getParentNode(), xmlnsPlusPrefix); } return ((Element) n).getAttribute(xmlnsPlusPrefix); }
From source file:org.regenstrief.util.XMLUtil.java
public final static String getPrefix(Node context, final String namespaceURI) { while (context != null) { if (Util.equals(namespaceURI, getNamespaceURI(context))) { return getPrefix(context); }//w w w . j av a 2 s . c o m context = context.getParentNode(); } return null; }
From source file:org.regenstrief.util.XMLUtil.java
/** * Retrieves the parent Node if the given Text Node is whitespace that can be stripped * //from ww w .j a v a 2 s .c o m * @param text the Node (must be of nodeType == Node.TEXT_NODE) * @return the parent or null */ public final static Node canStripTextWhitespace(final Node text) { if (Util.isAllWhitespace(text.getNodeValue())) { final Node p = text.getParentNode(); //if ((p != null) && (text.getPreviousSibling() != null) || (text.getNextSibling() != null)) { if ((p != null) && (p.getChildNodes().getLength() > 1)) { return p; } } return null; }