Example usage for org.w3c.dom Element getParentNode

List of usage examples for org.w3c.dom Element getParentNode

Introduction

In this page you can find the example usage for org.w3c.dom Element getParentNode.

Prototype

public Node getParentNode();

Source Link

Document

The parent of this node.

Usage

From source file:com.cloud.agent.api.storage.OVFHelper.java

public void rewriteOVFFile(final String origOvfFilePath, final String newOvfFilePath, final String diskName) {
    try {//w  w w  .ja  v  a 2 s.  c o  m
        final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                .parse(new File(origOvfFilePath));
        NodeList disks = doc.getElementsByTagName("Disk");
        NodeList files = doc.getElementsByTagName("File");
        NodeList items = doc.getElementsByTagName("Item");
        String keepfile = null;
        List<Element> toremove = new ArrayList<Element>();
        for (int j = 0; j < files.getLength(); j++) {
            Element file = (Element) files.item(j);
            String href = file.getAttribute("ovf:href");
            if (diskName.equals(href)) {
                keepfile = file.getAttribute("ovf:id");
            } else {
                toremove.add(file);
            }
        }
        String keepdisk = null;
        for (int i = 0; i < disks.getLength(); i++) {
            Element disk = (Element) disks.item(i);
            String fileRef = disk.getAttribute("ovf:fileRef");
            if (keepfile == null) {
                s_logger.info("FATAL: OVA format error");
            } else if (keepfile.equals(fileRef)) {
                keepdisk = disk.getAttribute("ovf:diskId");
            } else {
                toremove.add(disk);
            }
        }
        for (int k = 0; k < items.getLength(); k++) {
            Element item = (Element) items.item(k);
            NodeList cn = item.getChildNodes();
            for (int l = 0; l < cn.getLength(); l++) {
                if (cn.item(l) instanceof Element) {
                    Element el = (Element) cn.item(l);
                    if ("rasd:HostResource".equals(el.getNodeName())
                            && !(el.getTextContent().contains("ovf:/file/" + keepdisk)
                                    || el.getTextContent().contains("ovf:/disk/" + keepdisk))) {
                        toremove.add(item);
                        break;
                    }
                }
            }
        }

        for (Element rme : toremove) {
            if (rme.getParentNode() != null) {
                rme.getParentNode().removeChild(rme);
            }
        }

        final StringWriter writer = new StringWriter();
        final StreamResult result = new StreamResult(writer);
        final TransformerFactory tf = TransformerFactory.newInstance();
        final Transformer transformer = tf.newTransformer();
        final DOMSource domSource = new DOMSource(doc);
        transformer.transform(domSource, result);
        PrintWriter outfile = new PrintWriter(newOvfFilePath);
        outfile.write(writer.toString());
        outfile.close();
    } catch (SAXException | IOException | ParserConfigurationException | TransformerException e) {
        s_logger.info("Unexpected exception caught while removing network elements from OVF:" + e.getMessage(),
                e);
        throw new CloudRuntimeException(e);
    }
}

From source file:Main.java

protected static String nodeToString(Node node, Set<String> parentPrefixes, String namespaceURI)
        throws Exception {
    StringBuilder b = new StringBuilder();

    if (node == null) {
        return "";
    }/*from   w  ww  . j  av  a  2 s.c  om*/

    if (node instanceof Element) {
        Element element = (Element) node;
        b.append("<");
        b.append(element.getNodeName());

        Map<String, String> thisLevelPrefixes = new HashMap();
        if (element.getPrefix() != null && !parentPrefixes.contains(element.getPrefix())) {
            thisLevelPrefixes.put(element.getPrefix(), element.getNamespaceURI());
        }

        if (element.hasAttributes()) {
            NamedNodeMap map = element.getAttributes();
            for (int i = 0; i < map.getLength(); i++) {
                Node attr = map.item(i);
                if (attr.getNodeName().startsWith("xmlns"))
                    continue;
                if (attr.getPrefix() != null && !parentPrefixes.contains(attr.getPrefix())) {
                    thisLevelPrefixes.put(attr.getPrefix(), element.getNamespaceURI());
                }
                b.append(" ");
                b.append(attr.getNodeName());
                b.append("=\"");
                b.append(attr.getNodeValue());
                b.append("\"");
            }
        }

        if (namespaceURI != null && !thisLevelPrefixes.containsValue(namespaceURI)
                && !namespaceURI.equals(element.getParentNode().getNamespaceURI())) {
            b.append(" xmlns=\"").append(namespaceURI).append("\"");
        }

        for (Map.Entry<String, String> entry : thisLevelPrefixes.entrySet()) {
            b.append(" xmlns:").append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"");
            parentPrefixes.add(entry.getKey());
        }

        NodeList children = element.getChildNodes();
        boolean hasOnlyAttributes = true;
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            if (child.getNodeType() != Node.ATTRIBUTE_NODE) {
                hasOnlyAttributes = false;
                break;
            }
        }
        if (!hasOnlyAttributes) {
            b.append(">");
            for (int i = 0; i < children.getLength(); i++) {
                b.append(nodeToString(children.item(i), parentPrefixes, children.item(i).getNamespaceURI()));
            }
            b.append("</");
            b.append(element.getNodeName());
            b.append(">");
        } else {
            b.append("/>");
        }

        for (String thisLevelPrefix : thisLevelPrefixes.keySet()) {
            parentPrefixes.remove(thisLevelPrefix);
        }

    } else if (node.getNodeValue() != null) {
        b.append(encodeText(node, node.getNodeValue()));
    }

    return b.toString();
}

From source file:de.elbe5.base.data.XmlData.java

public Element replaceNode(Element oldNode, String name) {
    Element newNode = doc.createElement(name);
    oldNode.getParentNode().replaceChild(newNode, oldNode);
    return newNode;
}

From source file:it.unibas.spicy.persistence.xml.operators.ExportXSD.java

public void visitAttributeNode(AttributeNode node) {
    if (!node.isVirtual()) {
        Element elementTag = document.createElement(ExportXSD.PREFIX + "element");
        checkLeafNode(node, elementTag);
        stackOfElements.peek().appendChild(elementTag);
        checkOccurs(node, elementTag);//from   www .  ja  v  a2s . co  m
        if (logger.isDebugEnabled())
            logger.debug(" attribute of: " + node.getLabel());
    } else {
        Element fatherElement = this.stackOfElements.peek();
        Element grandFatherElement = (Element) fatherElement.getParentNode();
        grandFatherElement.setAttribute("mixed", "true");
    }
}

From source file:de.elbe5.base.data.XmlData.java

public Text replaceWithText(Element oldNode, String text) {
    Text newNode = doc.createTextNode(StringUtil.toXml(text));
    oldNode.getParentNode().replaceChild(newNode, oldNode);
    return newNode;
}

From source file:org.gvnix.web.menu.roo.addon.MenuOperationsImpl.java

/**
 * Attempts to locate a menu item and remove it.
 * /*w  w w  .j a va  2s.c  om*/
 * @param menuCategoryName the identifier for the menu category (required)
 * @param menuItemName the menu item identifier (required)
 * @param idPrefix the prefix to be used for this menu item (optional,
 *        MenuOperations.DEFAULT_MENU_ITEM_PREFIX is default)
 */
public void cleanUpMenuItem(JavaSymbolName menuCategoryName, JavaSymbolName menuItemName, String idPrefix,
        LogicalPath logicalPath) {

    waitToReferences();
    // TODO Added logicalPath param to method: related methods modification
    // required ?
    Validate.notNull(menuCategoryName, "Menu category identifier required");
    Validate.notNull(menuItemName, "Menu item id required");

    if (idPrefix == null || idPrefix.length() == 0) {
        idPrefix = DEFAULT_MENU_ITEM_PREFIX;
    }

    Document document = operations.getMenuDocument();

    StringBuilder categoryId = new StringBuilder(MenuEntryOperations.CATEGORY_MENU_ITEM_PREFIX);
    categoryId.append(menuCategoryName.getSymbolName().toLowerCase());

    StringBuilder itemId = new StringBuilder(idPrefix);
    itemId.append(menuCategoryName.getSymbolName().toLowerCase()).append("_")
            .append(menuItemName.getSymbolName().toLowerCase());

    // find menu item under this category if exists
    Element element = XmlUtils.findFirstElement("//menu-item[@id='".concat(categoryId.toString())
            .concat("']//menu-item[@id='").concat(itemId.toString()).concat("']"),
            document.getDocumentElement());
    if (element == null) {
        return;
    } else {
        element.getParentNode().removeChild(element);
    }

    operations.writeXMLConfigIfNeeded(document);
}

From source file:com.enonic.esl.xml.XMLTool.java

public static void replaceElement(Element oldElem, Element newElem) {
    Document doc = oldElem.getOwnerDocument();
    Node importedNew = doc.importNode(newElem, true);
    oldElem.getParentNode().replaceChild(importedNew, oldElem);
}

From source file:org.alloy.metal.xml.merge.ImportProcessor.java

public List<ResourceInputStream> extract(List<ResourceInputStream> sources) throws MergeException {
    try {// w  w  w  .  ja  v  a2  s.co m
        DynamicResourceIterator resourceList = new DynamicResourceIterator();
        resourceList.addAll(sources);

        while (resourceList.hasNext()) {
            ResourceInputStream myStream = resourceList.nextResource();
            Document doc = builder.parse(myStream);
            NodeList nodeList = (NodeList) xPath.evaluate(IMPORT_PATH, doc, XPathConstants.NODESET);
            int length = nodeList.getLength();
            for (int j = 0; j < length; j++) {
                Element element = (Element) nodeList.item(j);
                Resource resource = loader.getResource(element.getAttribute("resource"));
                ResourceInputStream ris = new ResourceInputStream(resource.getInputStream(),
                        resource.getURL().toString());
                resourceList.addEmbeddedResource(ris);
                element.getParentNode().removeChild(element);
            }
            if (length > 0) {
                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer xmlTransformer = tFactory.newTransformer();
                xmlTransformer.setOutputProperty(OutputKeys.VERSION, "1.0");
                xmlTransformer.setOutputProperty(OutputKeys.ENCODING, _String.CHARACTER_ENCODING.toString());
                xmlTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
                xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");

                DOMSource source = new DOMSource(doc);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(baos));
                StreamResult result = new StreamResult(writer);
                xmlTransformer.transform(source, result);

                byte[] itemArray = baos.toByteArray();

                resourceList.set(resourceList.getPosition() - 1, new ResourceInputStream(
                        new ByteArrayInputStream(itemArray), null, myStream.getNames()));
            } else {
                myStream.reset();
            }
        }

        return resourceList;
    } catch (Exception e) {
        throw new MergeException(e);
    }
}

From source file:com.photon.phresco.impl.ConfigManagerImpl.java

@Override
public void deleteEnvironment(String envName) throws ConfigurationException {
    String xpath = getXpathEnv(envName).toString();
    Element envNode = (Element) getNode(xpath);
    envNode.getParentNode().removeChild(envNode);
    try {/*from  ww w  .  j ava 2 s  . com*/
        writeXml(new FileOutputStream(configFile));
    } catch (FileNotFoundException e) {
        throw new ConfigurationException(e);
    }
}

From source file:DOMWriter.java

private String getNamespaceURI(String prefix, Element element, Node stopNode) {
    Node parent = element.getParentNode();
    String nsURI = element.getAttribute("xmlns:" + prefix);
    if (nsURI.length() == 0 && element != stopNode && parent instanceof Element)
        return getNamespaceURI(prefix, (Element) parent, stopNode);

    return (nsURI.length() > 0 ? nsURI : null);
}