Java Code Examples for org.w3c.dom.Node#getParentNode()
The following examples show how to use
org.w3c.dom.Node#getParentNode() .
These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: freehealth-connector File: NippinOptionalDeflateTransformer.java License: GNU Affero General Public License v3.0 | 6 votes |
private XMLSignatureInput processElement(XMLSignatureInput input, OutputStream os) throws TechnicalConnectorException, IOException { Node el = input.getSubNode(); if (input.getSubNode().getNodeType() == 3) { el = el.getParentNode(); } StringBuilder sb = new StringBuilder(); this.traverseElement((Element)el, sb); if (os == null) { byte[] decodedBytes = ConnectorIOUtils.decompress(ConnectorIOUtils.toBytes(sb.toString(), Charset.UTF_8)); return new XMLSignatureInput(decodedBytes); } else { os.write(ConnectorIOUtils.decompress(ConnectorIOUtils.toBytes(sb.toString(), Charset.UTF_8))); XMLSignatureInput output = new XMLSignatureInput((byte[])null); output.setOutputStream(os); return output; } }
Example 2
Source Project: Bytecoder File: ElementImpl.java License: Apache License 2.0 | 6 votes |
private Node getNextLogicalSibling(Node n) { Node next = n.getNextSibling(); // If "n" has no following sibling and its parent is an entity reference node we // need to continue the search through the following siblings of the entity // reference as these are logically siblings of the given node. if (next == null) { Node parent = n.getParentNode(); while (parent != null && parent.getNodeType() == Node.ENTITY_REFERENCE_NODE) { next = parent.getNextSibling(); if (next != null) { break; } parent = parent.getParentNode(); } } return next; }
Example 3
Source Project: openjdk-jdk8u File: TreeWalkerImpl.java License: GNU General Public License v2.0 | 6 votes |
/** Internal function. * Return the parent Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ Node getParentNode(Node node) { if (node == null || node == fRoot) return null; Node newNode = node.getParentNode(); if (newNode == null) return null; int accept = acceptNode(newNode); if (accept == NodeFilter.FILTER_ACCEPT) return newNode; else //if (accept == NodeFilter.SKIP_NODE) // and REJECT too. { return getParentNode(newNode); } }
Example 4
Source Project: hottub File: TreeWalker.java License: GNU General Public License v2.0 | 5 votes |
/** * Perform a pre-order traversal non-recursive style. * Note that TreeWalker assumes that the subtree is intended to represent * a complete (though not necessarily well-formed) document and, during a * traversal, startDocument and endDocument will always be issued to the * SAX listener. * * @param pos Node in the tree where to start traversal * @param top Node in the tree where to end traversal * * @throws TransformerException */ public void traverse(Node pos, Node top) throws org.xml.sax.SAXException { this.m_contentHandler.startDocument(); while (null != pos) { startNode(pos); Node nextNode = pos.getFirstChild(); while (null == nextNode) { endNode(pos); if ((null != top) && top.equals(pos)) break; nextNode = pos.getNextSibling(); if (null == nextNode) { pos = pos.getParentNode(); if ((null == pos) || ((null != top) && top.equals(pos))) { nextNode = null; break; } } } pos = nextNode; } this.m_contentHandler.endDocument(); }
Example 5
Source Project: jdk8u-dev-jdk File: CanonicalizerBase.java License: GNU General Public License v2.0 | 5 votes |
/** * Adds to ns the definitions from the parent elements of el * @param el * @param ns */ protected final void getParentNameSpaces(Element el, NameSpaceSymbTable ns) { Node n1 = el.getParentNode(); if (n1 == null || Node.ELEMENT_NODE != n1.getNodeType()) { return; } //Obtain all the parents of the element List<Element> parents = new ArrayList<Element>(); Node parent = n1; while (parent != null && Node.ELEMENT_NODE == parent.getNodeType()) { parents.add((Element)parent); parent = parent.getParentNode(); } //Visit them in reverse order. ListIterator<Element> it = parents.listIterator(parents.size()); while (it.hasPrevious()) { Element ele = it.previous(); handleParent(ele, ns); } parents.clear(); Attr nsprefix; if (((nsprefix = ns.getMappingWithoutRendered(XMLNS)) != null) && "".equals(nsprefix.getValue())) { ns.addMappingAndRender( XMLNS, "", getNullNode(nsprefix.getOwnerDocument())); } }
Example 6
Source Project: commons-jxpath File: DOMNodePointer.java License: Apache License 2.0 | 5 votes |
/** * Get the ns uri of the specified node. * @param node Node to check * @return String ns uri */ public static String getNamespaceURI(Node node) { if (node instanceof Document) { node = ((Document) node).getDocumentElement(); } Element element = (Element) node; String uri = element.getNamespaceURI(); if (uri == null) { String prefix = getPrefix(node); String qname = prefix == null ? "xmlns" : "xmlns:" + prefix; Node aNode = node; while (aNode != null) { if (aNode.getNodeType() == Node.ELEMENT_NODE) { Attr attr = ((Element) aNode).getAttributeNode(qname); if (attr != null) { uri = attr.getValue(); break; } } aNode = aNode.getParentNode(); } } return "".equals(uri) ? null : uri; }
Example 7
Source Project: openjdk-jdk9 File: DOMValidatorHelper.java License: GNU General Public License v2.0 | 5 votes |
/** Traverse the DOM and fire events to the schema validator. */ private void validate(Node node) { final Node top = node; // Performs a non-recursive traversal of the DOM. This // will avoid a stack overflow for DOMs with high depth. while (node != null) { beginNode(node); Node next = node.getFirstChild(); while (next == null) { finishNode(node); if (top == node) { break; } next = node.getNextSibling(); if (next == null) { node = node.getParentNode(); if (node == null || top == node) { if (node != null) { finishNode(node); } next = null; break; } } } node = next; } }
Example 8
Source Project: openjdk-jdk9 File: DOMStreamReader.java License: GNU General Public License v2.0 | 5 votes |
/** * Finds the root element node of the traversal. */ private Node findRootElement() { int type; Node node = _start; while ((type = node.getNodeType()) != DOCUMENT_NODE && type != ELEMENT_NODE) { node = node.getParentNode(); } return node; }
Example 9
Source Project: openjdk-8-source File: TreeWalker.java License: GNU General Public License v2.0 | 5 votes |
/** * Perform a pre-order traversal non-recursive style. * * In contrast to the traverse() method this method will not issue * startDocument() and endDocument() events to the SAX listener. * * @param pos Node in the tree where to start traversal * * @throws TransformerException */ public void traverseFragment(Node pos) throws org.xml.sax.SAXException { Node top = pos; while (null != pos) { startNode(pos); Node nextNode = pos.getFirstChild(); while (null == nextNode) { endNode(pos); if (top.equals(pos)) break; nextNode = pos.getNextSibling(); if (null == nextNode) { pos = pos.getParentNode(); if ((null == pos) || (top.equals(pos))) { if (null != pos) endNode(pos); nextNode = null; break; } } } pos = nextNode; } }
Example 10
Source Project: hottub File: RangeImpl.java License: GNU General Public License v2.0 | 5 votes |
/** what is the index of the child in the parent */ int indexOf(Node child, Node parent) { if (child.getParentNode() != parent) return -1; int i = 0; for(Node node = parent.getFirstChild(); node!= child; node=node.getNextSibling()) { i++; } return i; }
Example 11
Source Project: openjdk-jdk8u File: XSDocumentInfo.java License: GNU General Public License v2.0 | 5 votes |
/** * Initialize namespace support by collecting all of the namespace * declarations in the root's ancestors. This is necessary to * support schemas fragments, i.e. schemas embedded in other * documents. See, * * https://jaxp.dev.java.net/issues/show_bug.cgi?id=43 * * Requires the DOM to be created with namespace support enabled. */ private void initNamespaceSupport(Element schemaRoot) { fNamespaceSupport = new SchemaNamespaceSupport(); fNamespaceSupport.reset(); Node parent = schemaRoot.getParentNode(); while (parent != null && parent.getNodeType() == Node.ELEMENT_NODE && !parent.getNodeName().equals("DOCUMENT_NODE")) { Element eparent = (Element) parent; NamedNodeMap map = eparent.getAttributes(); int length = (map != null) ? map.getLength() : 0; for (int i = 0; i < length; i++) { Attr attr = (Attr) map.item(i); String uri = attr.getNamespaceURI(); // Check if attribute is an ns decl -- requires ns support if (uri != null && uri.equals("http://www.w3.org/2000/xmlns/")) { String prefix = attr.getLocalName().intern(); if (prefix == "xmlns") prefix = ""; // Declare prefix if not set -- moving upwards if (fNamespaceSupport.getURI(prefix) == null) { fNamespaceSupport.declarePrefix(prefix, attr.getValue().intern()); } } } parent = parent.getParentNode(); } }
Example 12
Source Project: cxf File: FragmentDialect.java License: Apache License 2.0 | 5 votes |
/** * Process Put requests for InsertAfter mode. * @param value Value defined in the Value element. * @return Representation element, which is returned as response. */ private Representation modifyRepresentationModeInsertAfter( List<Node> nodeList, ValueType value) { if (nodeList.isEmpty()) { throw new InvalidExpression(); } Node firstNode = nodeList.get(0); Document ownerDocument = firstNode.getOwnerDocument(); // if firstNode.getOwnerDocument == null the firstNode is ownerDocument ownerDocument = ownerDocument == null ? (Document) firstNode : ownerDocument; Node parent = firstNode.getParentNode(); if (parent == null && firstNode.getNodeType() != Node.DOCUMENT_NODE) { throw new InvalidExpression(); } if (parent == null) { parent = firstNode; if (((Document) parent).getDocumentElement() != null) { throw new InvalidExpression(); } } for (Node node : nodeList) { if (node.getNodeType() == Node.ATTRIBUTE_NODE) { throw new InvalidRepresentation(); } insertAfter(ownerDocument, parent, node, value); } Representation representation = new Representation(); representation.setAny(ownerDocument.getDocumentElement()); return representation; }
Example 13
Source Project: JDKSourceCode1.8 File: DOMValidatorHelper.java License: MIT License | 5 votes |
/** Traverse the DOM and fire events to the schema validator. */ private void validate(Node node) { final Node top = node; // Performs a non-recursive traversal of the DOM. This // will avoid a stack overflow for DOMs with high depth. while (node != null) { beginNode(node); Node next = node.getFirstChild(); while (next == null) { finishNode(node); if (top == node) { break; } next = node.getNextSibling(); if (next == null) { node = node.getParentNode(); if (node == null || top == node) { if (node != null) { finishNode(node); } next = null; break; } } } node = next; } }
Example 14
Source Project: dragonwell8_jdk File: DOMNamespaceContext.java License: GNU General Public License v2.0 | 5 votes |
private void addNamespaces(Node element) { if (element.getParentNode() != null) { addNamespaces(element.getParentNode()); } if (element instanceof Element) { Element el = (Element)element; NamedNodeMap map = el.getAttributes(); for (int x = 0; x < map.getLength(); x++) { Attr attr = (Attr)map.item(x); if ("xmlns".equals(attr.getPrefix())) { namespaceMap.put(attr.getLocalName(), attr.getValue()); } } } }
Example 15
Source Project: openjdk-8 File: RangeImpl.java License: GNU General Public License v2.0 | 5 votes |
Node nextNode(Node node, boolean visitChildren) { if (node == null) return null; Node result; if (visitChildren) { result = node.getFirstChild(); if (result != null) { return result; } } // if hasSibling, return sibling result = node.getNextSibling(); if (result != null) { return result; } // return parent's 1st sibling. Node parent = node.getParentNode(); while (parent != null && parent != fDocument ) { result = parent.getNextSibling(); if (result != null) { return result; } else { parent = parent.getParentNode(); } } // while (parent != null && parent != fRoot) { // end of list, return null return null; }
Example 16
Source Project: openjdk-8-source File: XSDocumentInfo.java License: GNU General Public License v2.0 | 5 votes |
/** * Initialize namespace support by collecting all of the namespace * declarations in the root's ancestors. This is necessary to * support schemas fragments, i.e. schemas embedded in other * documents. See, * * https://jaxp.dev.java.net/issues/show_bug.cgi?id=43 * * Requires the DOM to be created with namespace support enabled. */ private void initNamespaceSupport(Element schemaRoot) { fNamespaceSupport = new SchemaNamespaceSupport(); fNamespaceSupport.reset(); Node parent = schemaRoot.getParentNode(); while (parent != null && parent.getNodeType() == Node.ELEMENT_NODE && !parent.getNodeName().equals("DOCUMENT_NODE")) { Element eparent = (Element) parent; NamedNodeMap map = eparent.getAttributes(); int length = (map != null) ? map.getLength() : 0; for (int i = 0; i < length; i++) { Attr attr = (Attr) map.item(i); String uri = attr.getNamespaceURI(); // Check if attribute is an ns decl -- requires ns support if (uri != null && uri.equals("http://www.w3.org/2000/xmlns/")) { String prefix = attr.getLocalName().intern(); if (prefix == "xmlns") prefix = ""; // Declare prefix if not set -- moving upwards if (fNamespaceSupport.getURI(prefix) == null) { fNamespaceSupport.declarePrefix(prefix, attr.getValue().intern()); } } } parent = parent.getParentNode(); } }
Example 17
Source Project: openjdk-8 File: XMLUtils.java License: GNU General Public License v2.0 | 4 votes |
/** * This method is a tree-search to help prevent against wrapping attacks. It checks that no other * Element than the given "knownElement" argument has an ID attribute that matches the "value" * argument, which is the ID value of "knownElement". If this is the case then "false" is returned. */ public static boolean protectAgainstWrappingAttack( Node startNode, Element knownElement, String value ) { Node startParent = startNode.getParentNode(); Node processedNode = null; String id = value.trim(); if (id.charAt(0) == '#') { id = id.substring(1); } while (startNode != null) { if (startNode.getNodeType() == Node.ELEMENT_NODE) { Element se = (Element) startNode; NamedNodeMap attributes = se.getAttributes(); if (attributes != null) { for (int i = 0; i < attributes.getLength(); i++) { Attr attr = (Attr)attributes.item(i); if (attr.isId() && id.equals(attr.getValue()) && se != knownElement) { log.log(java.util.logging.Level.FINE, "Multiple elements with the same 'Id' attribute value!"); return false; } } } } processedNode = startNode; startNode = startNode.getFirstChild(); // no child, this node is done. if (startNode == null) { // close node processing, get sibling startNode = processedNode.getNextSibling(); } // no more siblings, get parent, all children // of parent are processed. while (startNode == null) { processedNode = processedNode.getParentNode(); if (processedNode == startParent) { return true; } // close parent node processing (processed node now) startNode = processedNode.getNextSibling(); } } return true; }
Example 18
Source Project: jdk8u-jdk File: XMLUtils.java License: GNU General Public License v2.0 | 4 votes |
/** * This is the work horse for {@link #circumventBug2650}. * * @param node * @see <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2650"> * Namespace axis resolution is not XPath compliant </A> */ @SuppressWarnings("fallthrough") private static void circumventBug2650internal(Node node) { Node parent = null; Node sibling = null; final String namespaceNs = Constants.NamespaceSpecNS; do { switch (node.getNodeType()) { case Node.ELEMENT_NODE : Element element = (Element) node; if (!element.hasChildNodes()) { break; } if (element.hasAttributes()) { NamedNodeMap attributes = element.getAttributes(); int attributesLength = attributes.getLength(); for (Node child = element.getFirstChild(); child!=null; child = child.getNextSibling()) { if (child.getNodeType() != Node.ELEMENT_NODE) { continue; } Element childElement = (Element) child; for (int i = 0; i < attributesLength; i++) { Attr currentAttr = (Attr) attributes.item(i); if (!namespaceNs.equals(currentAttr.getNamespaceURI())) { continue; } if (childElement.hasAttributeNS(namespaceNs, currentAttr.getLocalName())) { continue; } childElement.setAttributeNS(namespaceNs, currentAttr.getName(), currentAttr.getNodeValue()); } } } case Node.ENTITY_REFERENCE_NODE : case Node.DOCUMENT_NODE : parent = node; sibling = node.getFirstChild(); break; } while ((sibling == null) && (parent != null)) { sibling = parent.getNextSibling(); parent = parent.getParentNode(); } if (sibling == null) { return; } node = sibling; sibling = node.getNextSibling(); } while (true); }
Example 19
Source Project: jdk8u60 File: DOMHelper.java License: GNU General Public License v2.0 | 4 votes |
/** * Obtain the XPath-model parent of a DOM node -- ownerElement for Attrs, * parent for other nodes. * <p> * Background: The DOM believes that you must be your Parent's * Child, and thus Attrs don't have parents. XPath said that Attrs * do have their owning Element as their parent. This function * bridges the difference, either by using the DOM Level 2 ownerElement * function or by using a "silly and expensive function" in Level 1 * DOMs. * <p> * (There's some discussion of future DOMs generalizing ownerElement * into ownerNode and making it work on all types of nodes. This * still wouldn't help the users of Level 1 or Level 2 DOMs) * <p> * * @param node Node whose XPath parent we want to obtain * * @return the parent of the node, or the ownerElement if it's an * Attr node, or null if the node is an orphan. * * @throws RuntimeException if the Document has no root element. * This can't arise if the Document was created * via the DOM Level 2 factory methods, but is possible if other * mechanisms were used to obtain it */ public static Node getParentOfNode(Node node) throws RuntimeException { Node parent; short nodeType = node.getNodeType(); if (Node.ATTRIBUTE_NODE == nodeType) { Document doc = node.getOwnerDocument(); /* TBD: if(null == doc) { throw new RuntimeException(XSLMessages.createXPATHMessage(XPATHErrorResources.ER_CHILD_HAS_NO_OWNER_DOCUMENT, null));//"Attribute child does not have an owner document!"); } */ // Given how expensive the tree walk may be, we should first ask // whether this DOM can answer the question for us. The additional // test does slow down Level 1 DOMs slightly. DOMHelper2, which // is currently specialized for Xerces, assumes it can use the // Level 2 solution. We might want to have an intermediate stage, // which would assume DOM Level 2 but not assume Xerces. // // (Shouldn't have to check whether impl is null in a compliant DOM, // but let's be paranoid for a moment...) DOMImplementation impl=doc.getImplementation(); if(impl!=null && impl.hasFeature("Core","2.0")) { parent=((Attr)node).getOwnerElement(); return parent; } // DOM Level 1 solution, as fallback. Hugely expensive. Element rootElem = doc.getDocumentElement(); if (null == rootElem) { throw new RuntimeException( XMLMessages.createXMLMessage( XMLErrorResources.ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT, null)); //"Attribute child does not have an owner document element!"); } parent = locateAttrParent(rootElem, node); } else { parent = node.getParentNode(); // if((Node.DOCUMENT_NODE != nodeType) && (null == parent)) // { // throw new RuntimeException("Child does not have parent!"); // } } return parent; }
Example 20
Source Project: openjdk-jdk8u-backup File: DOMUtil.java License: GNU General Public License v2.0 | 4 votes |
/** * Copies the source tree into the specified place in a destination * tree. The source node and its children are appended as children * of the destination node. * <p> * <em>Note:</em> This is an iterative implementation. */ public static void copyInto(Node src, Node dest) throws DOMException { // get node factory Document factory = dest.getOwnerDocument(); boolean domimpl = factory instanceof DocumentImpl; // placement variables Node start = src; Node parent = src; Node place = src; // traverse source tree while (place != null) { // copy this node Node node = null; int type = place.getNodeType(); switch (type) { case Node.CDATA_SECTION_NODE: { node = factory.createCDATASection(place.getNodeValue()); break; } case Node.COMMENT_NODE: { node = factory.createComment(place.getNodeValue()); break; } case Node.ELEMENT_NODE: { Element element = factory.createElement(place.getNodeName()); node = element; NamedNodeMap attrs = place.getAttributes(); int attrCount = attrs.getLength(); for (int i = 0; i < attrCount; i++) { Attr attr = (Attr)attrs.item(i); String attrName = attr.getNodeName(); String attrValue = attr.getNodeValue(); element.setAttribute(attrName, attrValue); if (domimpl && !attr.getSpecified()) { ((AttrImpl)element.getAttributeNode(attrName)).setSpecified(false); } } break; } case Node.ENTITY_REFERENCE_NODE: { node = factory.createEntityReference(place.getNodeName()); break; } case Node.PROCESSING_INSTRUCTION_NODE: { node = factory.createProcessingInstruction(place.getNodeName(), place.getNodeValue()); break; } case Node.TEXT_NODE: { node = factory.createTextNode(place.getNodeValue()); break; } default: { throw new IllegalArgumentException("can't copy node type, "+ type+" ("+ place.getNodeName()+')'); } } dest.appendChild(node); // iterate over children if (place.hasChildNodes()) { parent = place; place = place.getFirstChild(); dest = node; } // advance else { place = place.getNextSibling(); while (place == null && parent != start) { place = parent.getNextSibling(); parent = parent.getParentNode(); dest = dest.getParentNode(); } } } }