Example usage for org.w3c.dom Attr getNodeName

List of usage examples for org.w3c.dom Attr getNodeName

Introduction

In this page you can find the example usage for org.w3c.dom Attr getNodeName.

Prototype

public String getNodeName();

Source Link

Document

The name of this node, depending on its type; see the table above.

Usage

From source file:org.alfresco.web.forms.xforms.Schema2XForms.java

@SuppressWarnings("unchecked")
public static void rebuildInstance(final Node prototypeNode, final Node oldInstanceNode,
        final Node newInstanceNode,

        final HashMap<String, String> schemaNamespaces) {
    final JXPathContext prototypeContext = JXPathContext.newContext(prototypeNode);
    prototypeContext.registerNamespace(NamespaceService.ALFRESCO_PREFIX, NamespaceService.ALFRESCO_URI);
    final JXPathContext instanceContext = JXPathContext.newContext(oldInstanceNode);
    instanceContext.registerNamespace(NamespaceService.ALFRESCO_PREFIX, NamespaceService.ALFRESCO_URI);

    for (final String prefix : schemaNamespaces.keySet()) {
        prototypeContext.registerNamespace(prefix, schemaNamespaces.get(prefix));
        instanceContext.registerNamespace(prefix, schemaNamespaces.get(prefix));
    }/*from  w w  w  .j  a v a2s . c o  m*/

    // Evaluate non-recursive XPaths for all prototype elements at this level
    final Iterator<Pointer> it = prototypeContext.iteratePointers("*");
    while (it.hasNext()) {
        final Pointer p = it.next();
        Element proto = (Element) p.getNode();
        String path = p.asPath();
        // check if this is a prototype element with the attribute set
        boolean isPrototype = proto.hasAttributeNS(NamespaceService.ALFRESCO_URI, "prototype")
                && proto.getAttributeNS(NamespaceService.ALFRESCO_URI, "prototype").equals("true");

        // We shouldn't locate a repeatable child with a fixed path
        if (isPrototype) {
            path = path.replaceAll("\\[(\\d+)\\]", "[position() >= $1]");
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("[rebuildInstance] evaluating prototyped nodes " + path);
            }
        } else {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("[rebuildInstance] evaluating child node with positional path " + path);
            }
        }

        Document newInstanceDocument = newInstanceNode.getOwnerDocument();

        // Locate the corresponding nodes in the instance document
        List<Node> l = (List<Node>) instanceContext.selectNodes(path);

        // If the prototype node isn't a prototype element, copy it in as a missing node, complete with all its children. We won't need to recurse on this node
        if (l.isEmpty()) {
            if (!isPrototype) {
                LOGGER.debug("[rebuildInstance] copying in missing node " + proto.getNodeName() + " to "
                        + XMLUtil.buildXPath(newInstanceNode, newInstanceDocument.getDocumentElement()));

                // Clone the prototype node and all its children
                Element clone = (Element) proto.cloneNode(true);
                newInstanceNode.appendChild(clone);

                if (oldInstanceNode instanceof Document) {
                    // add XMLSchema instance NS
                    addNamespace(clone, NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX,
                            NamespaceConstants.XMLSCHEMA_INSTANCE_NS);
                }
            }
        } else {
            // Otherwise, append the matches from the old instance document in order
            for (Node old : l) {
                Element oldEl = (Element) old;

                // Copy the old instance element rather than cloning it, so we don't copy over attributes
                Element clone = null;
                String nSUri = oldEl.getNamespaceURI();
                if (nSUri == null) {
                    clone = newInstanceDocument.createElement(oldEl.getTagName());
                } else {
                    clone = newInstanceDocument.createElementNS(nSUri, oldEl.getTagName());
                }
                newInstanceNode.appendChild(clone);

                if (oldInstanceNode instanceof Document) {
                    // add XMLSchema instance NS
                    addNamespace(clone, NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX,
                            NamespaceConstants.XMLSCHEMA_INSTANCE_NS);
                }

                // Copy over child text if this is not a complex type
                boolean isEmpty = true;
                for (Node n = old.getFirstChild(); n != null; n = n.getNextSibling()) {
                    if (n instanceof Text) {
                        clone.appendChild(newInstanceDocument.importNode(n, false));
                        isEmpty = false;
                    } else if (n instanceof Element) {
                        break;
                    }
                }

                // Populate the nil attribute. It may be true or false
                if (proto.hasAttributeNS(NamespaceConstants.XMLSCHEMA_INSTANCE_NS, "nil")) {
                    clone.setAttributeNS(NamespaceConstants.XMLSCHEMA_INSTANCE_NS,
                            NamespaceConstants.XMLSCHEMA_INSTANCE_PREFIX + ":nil", String.valueOf(isEmpty));
                }

                // Copy over attributes present in the prototype
                NamedNodeMap attributes = proto.getAttributes();
                for (int i = 0; i < attributes.getLength(); i++) {
                    Attr attribute = (Attr) attributes.item(i);
                    String localName = attribute.getLocalName();
                    if (localName == null) {
                        String name = attribute.getName();
                        if (oldEl.hasAttribute(name)) {
                            clone.setAttributeNode(
                                    (Attr) newInstanceDocument.importNode(oldEl.getAttributeNode(name), false));
                        } else {
                            LOGGER.debug("[rebuildInstance] copying in missing attribute "
                                    + attribute.getNodeName() + " to "
                                    + XMLUtil.buildXPath(clone, newInstanceDocument.getDocumentElement()));

                            clone.setAttributeNode((Attr) attribute.cloneNode(false));
                        }
                    } else {
                        String namespace = attribute.getNamespaceURI();
                        if (!((!isEmpty
                                && (namespace.equals(NamespaceConstants.XMLSCHEMA_INSTANCE_NS)
                                        && localName.equals("nil"))
                                || (namespace.equals(NamespaceService.ALFRESCO_URI)
                                        && localName.equals("prototype"))))) {
                            if (oldEl.hasAttributeNS(namespace, localName)) {
                                clone.setAttributeNodeNS((Attr) newInstanceDocument
                                        .importNode(oldEl.getAttributeNodeNS(namespace, localName), false));
                            } else {
                                LOGGER.debug("[rebuildInstance] copying in missing attribute "
                                        + attribute.getNodeName() + " to "
                                        + XMLUtil.buildXPath(clone, newInstanceDocument.getDocumentElement()));

                                clone.setAttributeNodeNS((Attr) attribute.cloneNode(false));
                            }
                        }
                    }
                }

                // recurse on children
                rebuildInstance(proto, oldEl, clone, schemaNamespaces);
            }
        }

        // Now add in a new copy of the prototype
        if (isPrototype) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("[rebuildInstance] appending " + proto.getNodeName() + " to "
                        + XMLUtil.buildXPath(newInstanceNode, newInstanceDocument.getDocumentElement()));
            }
            newInstanceNode.appendChild(proto.cloneNode(true));
        }
    }
}

From source file:org.apache.axis2.jaxws.message.util.impl.XMLStreamReaderFromDOM.java

public List getNamespaceDeclarations() {
    Element element = null;/*from   w  w  w  .  j av  a2 s.  c  o m*/
    if (cursor instanceof Element) {
        element = (Element) cursor;
    } else {
        return new ArrayList();
    }
    if (element == cacheNDKey) {
        return cacheND;
    }
    cacheNDKey = element;
    cacheND = new ArrayList();
    NamedNodeMap attrs = element.getAttributes();
    if (attrs != null) {
        for (int i = 0; i < attrs.getLength(); i++) {
            Attr attr = (Attr) attrs.item(i);
            String name = attr.getNodeName();
            if (name.startsWith("xmlns")) {
                String prefix = "";
                if (name.startsWith("xmlns:")) {
                    prefix = name.substring(6);
                }
                NamespaceDeclare nd = new NamespaceDeclare(prefix, attr.getNodeValue());
                cacheND.add(nd);
            }
        }
    }
    return cacheND;
}

From source file:org.apache.sling.its.servlets.ItsImportServlet.java

/**
 * Creates the jcr node and appends the necessary properties.
 *
 * @param absPath/*  w w  w  .jav  a2s. c om*/
 *         absolute path of the node.
 * @param attr
 *         attribute of the element
 * @param textContent
 *        text content of the element.
 */
private void output(final String absPath, final Attr attr, final String textContent) {
    javax.jcr.Node node = null;
    try {
        if (this.session.itemExists(absPath) && attr == null && textContent == null) {
            node = (javax.jcr.Node) this.session.getItem(absPath);
            node.remove();
        }
        node = JcrResourceUtil.createPath(absPath, "nt:unstructured", "nt:unstructured", this.session, false);

        if (textContent != null) {
            node.setProperty(SlingItsConstants.TEXT_CONTENT, textContent);
        }

        if (attr != null) {
            if (attr.getNodeName().startsWith(XMLConstants.XMLNS_ATTRIBUTE)) {
                node.setProperty(attr.getLocalName(), attr.getNodeValue());
                if (node.hasProperty(SlingItsConstants.NAMESPACE_DECLARATION)) {
                    final ArrayList<String> prefixes = new ArrayList<String>(ValueUtils.convertToArrayList(
                            node.getProperty(SlingItsConstants.NAMESPACE_DECLARATION).getValues()));
                    if (!prefixes.contains(attr.getLocalName())) {
                        prefixes.add(attr.getLocalName());
                        node.setProperty(SlingItsConstants.NAMESPACE_DECLARATION,
                                prefixes.toArray(new String[prefixes.size()]));
                    }
                } else {
                    node.setProperty(SlingItsConstants.NAMESPACE_DECLARATION,
                            new String[] { attr.getLocalName() });
                }
            } else if (StringUtils.equals(attr.getNodeName(), SlingItsConstants.XML_PRIMARY_TYPE_PROP)
                    || StringUtils.equals(attr.getNodeName(), SlingItsConstants.HTML_PRIMARY_TYPE_PROP)) {
                node.setPrimaryType(attr.getNodeValue());
            } else if (StringUtils.equals(attr.getNodeName(), SlingItsConstants.HTML_RESOURCE_TYPE_PROP)) {
                node.setProperty(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY, attr.getNodeValue());
            } else {
                node.setProperty(attr.getNodeName(), attr.getNodeValue());
            }
        }
        this.session.save();
    } catch (final RepositoryException e) {
        LOG.error("Unable to access repository to access or create node. Stack Trace: ", e);
    }
}

From source file:org.chiba.xml.xforms.constraints.Validator.java

/**
 * Validates the specified instance data node and its descendants.
 *
 * @param instance the instance to be validated.
 * @param path an xpath denoting an arbitrary subtre of the instance.
 * @return <code>true</code> if all relevant instance data nodes are valid
 *         regarding in terms of their <code>constraint</code> and
 *         <code>required</code> properties, otherwise <code>false</code>.
 *//*from w w  w.  j  a  v  a 2s.co m*/
public boolean validate(Instance instance, String path) {
    // initialize
    boolean result = true;
    String expressionPath = path;

    if (!path.endsWith("/")) {
        expressionPath = expressionPath + "/";
    }

    // set expression path to contain the specified path and its subtree
    expressionPath = expressionPath + "descendant-or-self::*";

    // evaluate expression path
    JXPathContext context = instance.getInstanceContext();
    Iterator iterator = context.iteratePointers(expressionPath);
    Pointer locationPointer;
    String locationPath;

    while (iterator.hasNext()) {
        locationPointer = (Pointer) iterator.next();
        locationPath = locationPointer.asPath();
        Element element = (Element) locationPointer.getNode();

        // validate element node against type
        String type = element.getAttributeNS(NamespaceCtx.XMLSCHEMA_INSTANCE_NS, "type");
        result &= validateNode(instance, locationPath, type);

        // handle attributes explicitely since JXPath has
        // seriuos problems with namespaced attributes
        NamedNodeMap attributes = element.getAttributes();

        for (int index = 0; index < attributes.getLength(); index++) {
            Attr attr = (Attr) attributes.item(index);

            if (isInstanceAttribute(attr)) {
                // validate attribute node
                result &= validateNode(instance, locationPath + "/@" + attr.getNodeName());
            }
        }
    }

    return result;
}

From source file:org.docx4j.XmlUtils.java

/**
 * Copy a node from one DOM document to another.  Used
 * to avoid relying on an underlying implementation which might 
 * not support importNode //  w  w  w  .  ja v a 2  s .co  m
 * (eg Xalan's org.apache.xml.dtm.ref.DTMNodeProxy).
 * 
 * WARNING: doesn't fully support namespaces!
 * 
 * @param sourceNode
 * @param destParent
 */
public static void treeCopy(Node sourceNode, Node destParent) {

    // http://osdir.com/ml/text.xml.xerces-j.devel/2004-04/msg00066.html
    // suggests the problem has been fixed?

    // source node maybe org.apache.xml.dtm.ref.DTMNodeProxy
    // (if its xslt output we are copying)
    // or com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl
    // (if its marshalled JAXB)

    log.debug("node type" + sourceNode.getNodeType());

    switch (sourceNode.getNodeType()) {

    case Node.DOCUMENT_NODE: // type 9
    case Node.DOCUMENT_FRAGMENT_NODE: // type 11

        //              log.debug("DOCUMENT:" + w3CDomNodeToString(sourceNode) );
        //              if (sourceNode.getChildNodes().getLength()==0) {
        //                 log.debug("..no children!");
        //              }

        // recurse on each child
        NodeList nodes = sourceNode.getChildNodes();
        if (nodes != null) {
            for (int i = 0; i < nodes.getLength(); i++) {
                log.debug("child " + i + "of DOCUMENT_NODE");
                //treeCopy((DTMNodeProxy)nodes.item(i), destParent);
                treeCopy((Node) nodes.item(i), destParent);
            }
        }
        break;
    case Node.ELEMENT_NODE:

        // Copy of the node itself
        log.debug("copying: " + sourceNode.getNodeName());
        Node newChild;
        if (destParent instanceof Document) {
            newChild = ((Document) destParent).createElementNS(sourceNode.getNamespaceURI(),
                    sourceNode.getLocalName());
        } else if (sourceNode.getNamespaceURI() != null) {
            newChild = destParent.getOwnerDocument().createElementNS(sourceNode.getNamespaceURI(),
                    sourceNode.getLocalName());
        } else {
            newChild = destParent.getOwnerDocument().createElement(sourceNode.getNodeName());
        }
        destParent.appendChild(newChild);

        // .. its attributes
        NamedNodeMap atts = sourceNode.getAttributes();
        for (int i = 0; i < atts.getLength(); i++) {

            Attr attr = (Attr) atts.item(i);

            //                  log.debug("attr.getNodeName(): " + attr.getNodeName());
            //                  log.debug("attr.getNamespaceURI(): " + attr.getNamespaceURI());
            //                  log.debug("attr.getLocalName(): " + attr.getLocalName());
            //                  log.debug("attr.getPrefix(): " + attr.getPrefix());

            if (attr.getNodeName().startsWith("xmlns:")) {
                /* A document created from a dom4j document using dom4j 1.6.1's io.domWriter
                 does this ?!
                 attr.getNodeName(): xmlns:w 
                 attr.getNamespaceURI(): null
                 attr.getLocalName(): null
                 attr.getPrefix(): null
                         
                 unless i'm doing something wrong, this is another reason to
                 remove use of dom4j from docx4j
                */
                ;
                // this is a namespace declaration. not our problem
            } else if (attr.getNamespaceURI() == null) {
                //log.debug("attr.getLocalName(): " + attr.getLocalName() + "=" + attr.getValue());
                ((org.w3c.dom.Element) newChild).setAttribute(attr.getName(), attr.getValue());
            } else if (attr.getNamespaceURI().equals("http://www.w3.org/2000/xmlns/")) {
                ; // this is a namespace declaration. not our problem
            } else if (attr.getNodeName() != null) {
                // && attr.getNodeName().equals("xml:space")) {
                // restrict this fix to xml:space only, if necessary

                // Necessary when invoked from BindingTraverserXSLT,
                // com.sun.org.apache.xerces.internal.dom.AttrNSImpl
                // otherwise it was becoming w:space="preserve"!

                /* eg xml:space
                 * 
                   attr.getNodeName(): xml:space
                   attr.getNamespaceURI(): http://www.w3.org/XML/1998/namespace
                   attr.getLocalName(): space
                   attr.getPrefix(): xml
                 */

                ((org.w3c.dom.Element) newChild).setAttributeNS(attr.getNamespaceURI(), attr.getNodeName(),
                        attr.getValue());
            } else {
                ((org.w3c.dom.Element) newChild).setAttributeNS(attr.getNamespaceURI(), attr.getLocalName(),
                        attr.getValue());
            }
        }

        // recurse on each child
        NodeList children = sourceNode.getChildNodes();
        if (children != null) {
            for (int i = 0; i < children.getLength(); i++) {
                //treeCopy( (DTMNodeProxy)children.item(i), newChild);
                treeCopy((Node) children.item(i), newChild);
            }
        }

        break;

    case Node.TEXT_NODE:

        // Where destParent is com.sun.org.apache.xerces.internal.dom.DocumentImpl,
        // destParent.getOwnerDocument() returns null.
        // #document ; com.sun.org.apache.xerces.internal.dom.DocumentImpl

        //               System.out.println(sourceNode.getNodeValue());

        //System.out.println(destParent.getNodeName() + " ; " + destParent.getClass().getName() );
        if (destParent.getOwnerDocument() == null && destParent.getNodeName().equals("#document")) {
            Node textNode = ((Document) destParent).createTextNode(sourceNode.getNodeValue());
            destParent.appendChild(textNode);
        } else {
            Node textNode = destParent.getOwnerDocument().createTextNode(sourceNode.getNodeValue());
            // Warning: If you attempt to write a single "&" character, it will be converted to &amp; 
            // even if it doesn't look like that with getNodeValue() or getTextContent()!
            // So avoid any tricks with entities! See notes in docx2xhtmlNG2.xslt
            Node appended = destParent.appendChild(textNode);

        }
        break;

    //                case Node.CDATA_SECTION_NODE:
    //                    writer.write("<![CDATA[" +
    //                                 node.getNodeValue() + "]]>");
    //                    break;
    //
    //                case Node.COMMENT_NODE:
    //                    writer.write(indentLevel + "<!-- " +
    //                                 node.getNodeValue() + " -->");
    //                    writer.write(lineSeparator);
    //                    break;
    //
    //                case Node.PROCESSING_INSTRUCTION_NODE:
    //                    writer.write("<?" + node.getNodeName() +
    //                                 " " + node.getNodeValue() +
    //                                 "?>");
    //                    writer.write(lineSeparator);
    //                    break;
    //
    //                case Node.ENTITY_REFERENCE_NODE:
    //                    writer.write("&" + node.getNodeName() + ";");
    //                    break;
    //
    //                case Node.DOCUMENT_TYPE_NODE:
    //                    DocumentType docType = (DocumentType)node;
    //                    writer.write("<!DOCTYPE " + docType.getName());
    //                    if (docType.getPublicId() != null)  {
    //                        System.out.print(" PUBLIC \"" +
    //                            docType.getPublicId() + "\" ");
    //                    } else {
    //                        writer.write(" SYSTEM ");
    //                    }
    //                    writer.write("\"" + docType.getSystemId() + "\">");
    //                    writer.write(lineSeparator);
    //                    break;
    }
}

From source file:org.erdc.cobie.shared.spreadsheetml.transformation.cobietab.COBieSpreadSheet.java

License:asdf

public static void nodeToStream(Node node, PrintWriter out) {
    String workSheetName = "";
    boolean canonical = false;
    // is there anything to do?
    if (node == null) {
        return;//from  w w w.  j  ava2s .  c  om
    }

    int type = node.getNodeType();
    switch (type) {
    // print document
    case Node.DOCUMENT_NODE: {
        if (!canonical) {
            out.println("<?xml version=\"1.0\"?>");
        }
        // print(((Document)node).getDocumentElement());

        NodeList children = node.getChildNodes();
        for (int iChild = 0; iChild < children.getLength(); iChild++) {
            nodeToStream(children.item(iChild), out);
        }
        out.flush();
        break;
    }

    // print element with attributes
    case Node.ELEMENT_NODE: {
        out.print('<');
        out.print(node.getNodeName());
        Attr attrs[] = sortAttributes(node.getAttributes());
        for (int i = 0; i < attrs.length; i++) {
            Attr attr = attrs[i];
            if (((node.getNodeName().equalsIgnoreCase("Worksheet")
                    || node.getNodeName().equalsIgnoreCase("ss:Worksheet"))
                    && attr.getName().equalsIgnoreCase("Name")) || attr.getName().equalsIgnoreCase("ss:Name")) {
                workSheetName = normalize(attr.getNodeValue());
            }
            out.print(' ');
            out.print(attr.getNodeName());
            out.print("=\"");
            out.print(normalize(attr.getNodeValue()));
            out.print('"');
        }
        out.print('>');
        out.flush();
        NodeList children = node.getChildNodes();
        if (children != null) {
            int len = children.getLength();
            for (int i = 0; i < len; i++) {
                nodeToStream(children.item(i), out);
            }
        }
        break;
    }

    // handle entity reference nodes
    case Node.ENTITY_REFERENCE_NODE: {
        if (canonical) {
            NodeList children = node.getChildNodes();
            if (children != null) {
                int len = children.getLength();
                for (int i = 0; i < len; i++) {
                    nodeToStream(children.item(i), out);
                }
            }
        } else {
            out.print('&');
            out.print(node.getNodeName());
            out.print(';');
        }
        break;
    }

    // print cdata sections
    case Node.CDATA_SECTION_NODE: {
        if (canonical) {
            out.print(normalize(node.getNodeValue()));
        } else {
            out.print("<![CDATA[");
            out.print(node.getNodeValue());
            out.print("]]>");
        }
        break;
    }

    // print text
    case Node.TEXT_NODE: {
        out.print(normalize(node.getNodeValue()));
        break;
    }

    // print processing instruction
    case Node.PROCESSING_INSTRUCTION_NODE: {
        out.print("<?");
        out.print(node.getNodeName());
        String data = node.getNodeValue();
        if ((data != null) && (data.length() > 0)) {
            out.print(' ');
            out.print(data);
        }
        out.print("?>");
        break;
    }

    // print comment
    case Node.COMMENT_NODE: {
        out.print("<!--");
        String data = node.getNodeValue();
        if (data != null) {
            out.print(data);
        }
        out.print("-->");
        break;
    }
    }

    if (type == Node.ELEMENT_NODE) {
        if ((node.getNodeName().equalsIgnoreCase("Worksheet")
                || node.getNodeName().equalsIgnoreCase("ss:Worksheet")) && (workSheetName.length() > 0)) {
            out.print(printCOBieSheetDataValidation(workSheetName));
        }
        out.print("</");
        out.print(node.getNodeName());
        out.print('>');
    }

    out.flush();

}

From source file:org.exist.dom.ElementImpl.java

private Node appendChild(Txn transaction, NodeId newNodeId, NodeImplRef last, NodePath lastPath, Node child,
        StreamListener listener) throws DOMException {
    if (last == null || last.getNode() == null)
    //TODO : same test as above ? -pb
    {/* w  w w.  java  2s .  c  o m*/
        throw new DOMException(DOMException.INVALID_MODIFICATION_ERR, "invalid node");
    }
    final DocumentImpl owner = (DocumentImpl) getOwnerDocument();
    DBBroker broker = null;
    try {
        broker = ownerDocument.getBrokerPool().get(null);
        switch (child.getNodeType()) {
        case Node.DOCUMENT_FRAGMENT_NODE:
            appendChildren(transaction, newNodeId, null, last, lastPath, child.getChildNodes(), listener);
            return null; // TODO: implement document fragments so
        //we can return all newly appended children
        case Node.ELEMENT_NODE:
            // create new element
            final ElementImpl elem = new ElementImpl(
                    new QName(child.getLocalName() == null ? child.getNodeName() : child.getLocalName(),
                            child.getNamespaceURI(), child.getPrefix()),
                    broker.getBrokerPool().getSymbols());
            elem.setNodeId(newNodeId);
            elem.setOwnerDocument(owner);
            final NodeListImpl ch = new NodeListImpl();
            final NamedNodeMap attribs = child.getAttributes();
            int numActualAttribs = 0;
            for (int i = 0; i < attribs.getLength(); i++) {
                final Attr attr = (Attr) attribs.item(i);
                if (!attr.getNodeName().startsWith("xmlns")) {
                    ch.add(attr);
                    numActualAttribs++;
                } else {
                    final String xmlnsDecl = attr.getNodeName();
                    final String prefix = xmlnsDecl.length() == 5 ? "" : xmlnsDecl.substring(6);
                    elem.addNamespaceMapping(prefix, attr.getNodeValue());
                }
            }
            final NodeList cl = child.getChildNodes();
            for (int i = 0; i < cl.getLength(); i++) {
                final Node n = cl.item(i);
                if (n.getNodeType() != Node.ATTRIBUTE_NODE) {
                    ch.add(n);
                }
            }
            elem.setChildCount(ch.getLength());
            if (numActualAttribs != (short) numActualAttribs) {
                throw new DOMException(DOMException.INVALID_MODIFICATION_ERR, "Too many attributes");
            }
            elem.setAttributes((short) numActualAttribs);
            lastPath.addComponent(elem.getQName());
            // insert the node
            broker.insertNodeAfter(transaction, last.getNode(), elem);
            broker.indexNode(transaction, elem, lastPath);
            broker.getIndexController().indexNode(transaction, elem, lastPath, listener);
            elem.setChildCount(0);
            last.setNode(elem);
            //process child nodes
            elem.appendChildren(transaction, newNodeId.newChild(), null, last, lastPath, ch, listener);
            broker.endElement(elem, lastPath, null);
            broker.getIndexController().endElement(transaction, elem, lastPath, listener);
            lastPath.removeLastComponent();
            return elem;
        case Node.TEXT_NODE:
            final TextImpl text = new TextImpl(newNodeId, ((Text) child).getData());
            text.setOwnerDocument(owner);
            // insert the node
            broker.insertNodeAfter(transaction, last.getNode(), text);
            broker.indexNode(transaction, text, lastPath);
            broker.getIndexController().indexNode(transaction, text, lastPath, listener);
            last.setNode(text);
            return text;
        case Node.CDATA_SECTION_NODE:
            final CDATASectionImpl cdata = new CDATASectionImpl(newNodeId, ((CDATASection) child).getData());
            cdata.setOwnerDocument(owner);
            // insert the node
            broker.insertNodeAfter(transaction, last.getNode(), cdata);
            broker.indexNode(transaction, cdata, lastPath);
            last.setNode(cdata);
            return cdata;
        case Node.ATTRIBUTE_NODE:
            final Attr attr = (Attr) child;
            final String ns = attr.getNamespaceURI();
            final String prefix = (Namespaces.XML_NS.equals(ns) ? "xml" : attr.getPrefix());
            String name = attr.getLocalName();
            if (name == null) {
                name = attr.getName();
            }
            final QName attrName = new QName(name, ns, prefix);
            final AttrImpl attrib = new AttrImpl(attrName, attr.getValue(),
                    broker.getBrokerPool().getSymbols());
            attrib.setNodeId(newNodeId);
            attrib.setOwnerDocument(owner);
            if (ns != null && attrName.compareTo(Namespaces.XML_ID_QNAME) == Constants.EQUAL) {
                // an xml:id attribute. Normalize the attribute and set its type to ID
                attrib.setValue(StringValue.trimWhitespace(StringValue.collapseWhitespace(attrib.getValue())));
                attrib.setType(AttrImpl.ID);
            } else {
                attrName.setNameType(ElementValue.ATTRIBUTE);
            }
            broker.insertNodeAfter(transaction, last.getNode(), attrib);
            broker.indexNode(transaction, attrib, lastPath);
            broker.getIndexController().indexNode(transaction, attrib, lastPath, listener);
            last.setNode(attrib);
            return attrib;
        case Node.COMMENT_NODE:
            final CommentImpl comment = new CommentImpl(((Comment) child).getData());
            comment.setNodeId(newNodeId);
            comment.setOwnerDocument(owner);
            // insert the node
            broker.insertNodeAfter(transaction, last.getNode(), comment);
            broker.indexNode(transaction, comment, lastPath);
            last.setNode(comment);
            return comment;
        case Node.PROCESSING_INSTRUCTION_NODE:
            final ProcessingInstructionImpl pi = new ProcessingInstructionImpl(newNodeId,
                    ((ProcessingInstruction) child).getTarget(), ((ProcessingInstruction) child).getData());
            pi.setOwnerDocument(owner);
            //insert the node
            broker.insertNodeAfter(transaction, last.getNode(), pi);
            broker.indexNode(transaction, pi, lastPath);
            last.setNode(pi);
            return pi;
        default:
            throw new DOMException(DOMException.INVALID_MODIFICATION_ERR,
                    "Unknown node type: " + child.getNodeType() + " " + child.getNodeName());
        }
    } catch (final EXistException e) {
        LOG.warn("Exception while appending node: " + e.getMessage(), e);
    } finally {
        if (broker != null)
            broker.release();
    }
    return null;
}

From source file:org.opensingular.internal.lib.commons.xml.TestMElement.java

License:asdf

/**
 * Verifica se os atributos so iguais. Existe pois a comparao de
 * atributos possui particularidades.//from w ww .j  av a 2  s .  c om
 *
 * @param n1 -
 * @param n2 -
 * @throws Exception Se no forem iguais
 */
public static void isIgual(Attr n1, Attr n2) throws Exception {
    if (n1 == n2) {
        return;
    }
    isIgual(n1, n2, "NodeName", n1.getNodeName(), n2.getNodeName());
    isIgual(n1, n2, "NodeValue", n1.getNodeValue(), n2.getNodeValue());

    //Por algum motivo depois do parse Prefix passa de null para no null
    //isIgual(n1, n2, "Prefix", n1.getPrefix(), n2.getPrefix());
    //Por algum motivo depois do parse Localname passe de no null para
    // null
    //isIgual(n1, n2, "LocalName", n1.getLocalName(), n2.getLocalName());

    if (!(n1.getNodeName().startsWith("xmlns") && n2.getNodeName().startsWith("xmlns"))) {
        isIgual(n1, n2, "Namespace", n1.getNamespaceURI(), n2.getNamespaceURI());
    }
}

From source file:org.osaf.cosmo.xml.DomWriter.java

private static void writeAttribute(Attr a, XMLStreamWriter writer) throws XMLStreamException {
    //if (log.isDebugEnabled())
    //log.debug("Writing attribute " + a.getNodeName());

    String local = a.getLocalName();
    if (local == null)
        local = a.getNodeName();
    String ns = a.getNamespaceURI();
    String value = a.getValue();/* ww w .j a v a2  s.  c o  m*/

    // was handled by writing the default namespace in writeElement
    if (local.equals("xmlns"))
        return;

    if (ns != null) {
        String prefix = a.getPrefix();
        if (prefix != null)
            writer.writeAttribute(prefix, ns, local, value);
        else
            writer.writeAttribute(ns, local, value);
    } else {
        writer.writeAttribute(local, value);
    }
}

From source file:org.unitedinternet.cosmo.util.DomWriter.java

private static void writeAttribute(Attr a, XMLStreamWriter writer) throws XMLStreamException {
    //if (log.isDebugEnabled())
    //log.debug("Writing attribute " + a.getNodeName());

    String local = a.getLocalName();
    if (local == null) {
        local = a.getNodeName();
    }//w w  w  . j a  v  a  2 s  . c om
    String ns = a.getNamespaceURI();
    String value = a.getValue();

    // was handled by writing the default namespace in writeElement
    if (local.equals("xmlns")) {
        return;
    }

    if (ns != null) {
        String prefix = a.getPrefix();
        if (prefix != null) {
            writer.writeAttribute(prefix, ns, local, value);
        } else {
            writer.writeAttribute(ns, local, value);
        }
    } else {
        writer.writeAttribute(local, value);
    }
}