/** * Marshal the attribute for the predicate if one was specified. */ public void predicateAttribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { if(null != xPathFragment) { XPathPredicate predicate = xPathFragment.getPredicate(); if(null != predicate) { XPathFragment predicateXPathFragment = predicate.getXPathFragment(); if(predicateXPathFragment.isAttribute()) { attribute(predicateXPathFragment, namespaceResolver, predicate.getValue()); } } } }
/** * Marshal the attribute for the predicate if one was specified. */ public void predicateAttribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { if(null != xPathFragment) { XPathPredicate predicate = xPathFragment.getPredicate(); if(null != predicate) { XPathFragment predicateXPathFragment = predicate.getXPathFragment(); if(predicateXPathFragment.isAttribute()) { attribute(predicateXPathFragment, namespaceResolver, predicate.getValue()); } } } }
public NodeList selectElementNodes(Node contextNode, XPathFragment xPathFragment, XMLNamespaceResolver xmlNamespaceResolver) { XMLNodeList xmlNodeList = new XMLNodeList(); Node child = contextNode.getFirstChild(); while (null != child) { String elementNamespaceURI = null; if(xmlNamespaceResolver != null) { elementNamespaceURI = xmlNamespaceResolver.resolveNamespacePrefix(xPathFragment.getPrefix()); } if ((child.getNodeType() == Node.ELEMENT_NODE) && sameName(child, xPathFragment.getLocalName()) && sameNamespaceURI(child, elementNamespaceURI)) { XPathPredicate predicate = xPathFragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute() && child.getAttributes() != null) { Attr attr = (Attr)child.getAttributes().getNamedItemNS(predicateFragment.getNamespaceURI(), predicateFragment.getLocalName()); if(attr != null) { String attribute = attr.getValue(); if(xPathFragment.getPredicate().getValue().equals(attribute)) { xmlNodeList.add(child); } } } } else { xmlNodeList.add(child); } } child = child.getNextSibling(); } return xmlNodeList; }
public NodeList selectElementNodes(Node contextNode, XPathFragment xPathFragment, XMLNamespaceResolver xmlNamespaceResolver) { XMLNodeList xmlNodeList = new XMLNodeList(); Node child = contextNode.getFirstChild(); while (null != child) { String elementNamespaceURI = null; if(xmlNamespaceResolver != null) { elementNamespaceURI = xmlNamespaceResolver.resolveNamespacePrefix(xPathFragment.getPrefix()); } if ((child.getNodeType() == Node.ELEMENT_NODE) && sameName(child, xPathFragment.getLocalName()) && sameNamespaceURI(child, elementNamespaceURI)) { XPathPredicate predicate = xPathFragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute() && child.getAttributes() != null) { Attr attr = (Attr)child.getAttributes().getNamedItemNS(predicateFragment.getNamespaceURI(), predicateFragment.getLocalName()); if(attr != null) { String attribute = attr.getValue(); if(xPathFragment.getPredicate().getValue().equals(attribute)) { xmlNodeList.add(child); } } } } else { xmlNodeList.add(child); } } child = child.getNextSibling(); } return xmlNodeList; }
element.setAttributeNS(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI, javax.xml.XMLConstants.XMLNS_ATTRIBUTE + Constants.COLON + fragment.getPrefix(), fragment.getNamespaceURI()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { element.setAttributeNS(predicateFragment.getNamespaceURI(), predicateFragment.getLocalName(), fragment.getPredicate().getValue());
this.hasPredicateChildren = hasPredicateChildren || anXPathFragment.getPredicate() != null; if(this.getNonAttributeChildren() != null && this.hasPredicateChildren) { for(XPathNode nextChild: this.getNonAttributeChildren()) { XPathFragment nextFrag = nextChild.getXPathFragment(); if(nextFrag != null && nextFrag.equals(anXPathFragment, true)) { if(nextFrag.getPredicate() == null && anXPathFragment.getPredicate() != null) { nextChild.setHasPredicateSiblings(true); } else if(anXPathFragment.getPredicate() == null && nextFrag.getPredicate() != null) { xPathNode.setHasPredicateSiblings(true);
element.setAttributeNS(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI, javax.xml.XMLConstants.XMLNS_ATTRIBUTE + Constants.COLON + fragment.getPrefix(), fragment.getNamespaceURI()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { element.setAttributeNS(predicateFragment.getNamespaceURI(), predicateFragment.getLocalName(), fragment.getPredicate().getValue());
String namespace = resolveNamespacePrefix(fragment, getNamespaceResolverForField(xmlField)); Element newElement = parent.getOwnerDocument().createElementNS(namespace, fragment.getShortName()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) { newElement.setAttribute(predicateFragment.getLocalName(), fragment.getPredicate().getValue()); } else { String name = predicateFragment.getLocalName(); newElement.setAttributeNS(predicateFragment.getNamespaceURI(), name, fragment.getPredicate().getValue()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) { newElement.setAttribute(predicateFragment.getLocalName(), fragment.getPredicate().getValue()); } else { String name = predicateFragment.getLocalName(); newElement.setAttributeNS(predicateFragment.getNamespaceURI(), name, fragment.getPredicate().getValue()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) {
String namespace = resolveNamespacePrefix(fragment, getNamespaceResolverForField(xmlField)); Element newElement = parent.getOwnerDocument().createElementNS(namespace, fragment.getShortName()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) { newElement.setAttribute(predicateFragment.getLocalName(), fragment.getPredicate().getValue()); } else { String name = predicateFragment.getLocalName(); newElement.setAttributeNS(predicateFragment.getNamespaceURI(), name, fragment.getPredicate().getValue()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) { newElement.setAttribute(predicateFragment.getLocalName(), fragment.getPredicate().getValue()); } else { String name = predicateFragment.getLocalName(); newElement.setAttributeNS(predicateFragment.getNamespaceURI(), name, fragment.getPredicate().getValue()); XPathPredicate predicate = fragment.getPredicate(); if(predicate != null) { XPathFragment predicateFragment = predicate.getXPathFragment(); if(predicateFragment.isAttribute()) { if(predicateFragment.getNamespaceURI() == null || predicateFragment.getNamespaceURI().length() == 0) {
this.hasPredicateChildren = hasPredicateChildren || anXPathFragment.getPredicate() != null; if(this.getNonAttributeChildren() != null && this.hasPredicateChildren) { for(XPathNode nextChild: this.getNonAttributeChildren()) { XPathFragment nextFrag = nextChild.getXPathFragment(); if(nextFrag != null && nextFrag.equals(anXPathFragment, true)) { if(nextFrag.getPredicate() == null && anXPathFragment.getPredicate() != null) { nextChild.setHasPredicateSiblings(true); } else if(anXPathFragment.getPredicate() == null && nextFrag.getPredicate() != null) { xPathNode.setHasPredicateSiblings(true);
if (null != xpf && xPathNode == predictedNextXPathNode.getParent() && (localName == xpf.getLocalName() || localName.equals(xpf.getLocalName())) && (namespaceURI == xpf.getNamespaceURI() || namespaceURI.equals(xpf.getNamespaceURI())) && null == xpf.getPredicate() && !xpf.containsIndex()) {
/** * Indicates if this property is mapped by position, i.e. 'name="data[1]"', * or is mapped by attribute value (predicate mapping), i.e. * 'personal-info[@pi-type='last-name']/name[@name-type='surname']/text()' * */ public boolean isPositional() { if (getXmlPath() == null) { return false; } Field field = new XMLField(getXmlPath()); XPathFragment frag = field.getXPathFragment(); // loop until we have the last non-null, non-attribute, non-text fragment while (true) { if (frag.getNextFragment() != null && !frag.getNextFragment().isAttribute() && !frag.getNextFragment().nameIsText()) { frag = frag.getNextFragment(); } else { break; } } return frag.containsIndex() || frag.getPredicate() != null; }
/** * Indicates if this property is mapped by position, i.e. 'name="data[1]"', * or is mapped by attribute value (predicate mapping), i.e. * 'personal-info[@pi-type='last-name']/name[@name-type='surname']/text()' * */ public boolean isPositional() { if (getXmlPath() == null) { return false; } Field field = new XMLField(getXmlPath()); XPathFragment frag = field.getXPathFragment(); // loop until we have the last non-null, non-attribute, non-text fragment while (true) { if (frag.getNextFragment() != null && !frag.getNextFragment().isAttribute() && !frag.getNextFragment().nameIsText()) { frag = frag.getNextFragment(); } else { break; } } return frag.containsIndex() || frag.getPredicate() != null; }
if (null != xpf && xPathNode == predictedNextXPathNode.getParent() && (localName == xpf.getLocalName() || localName.equals(xpf.getLocalName())) && (namespaceURI == xpf.getNamespaceURI() || namespaceURI.equals(xpf.getNamespaceURI())) && null == xpf.getPredicate() && !xpf.containsIndex()) {
private void initializeXPathFragment(XPathFragment xPathFragment) { XPathPredicate predicate = xPathFragment.getPredicate(); if(null != predicate) { initializeXPathFragment(predicate.getXPathFragment()); } String localName = xPathFragment.getLocalName(); if(localName !=null && !localName.equals(XMLConstants.EMPTY_STRING)){ if(null == xPathFragment.getNamespaceURI()) { if(xPathFragment.hasNamespace()) { if(null == namespaceResolver) { throw XMLMarshalException.namespaceNotFound(xPathFragment.getShortName()); } else { String uri = namespaceResolver.resolveNamespacePrefix(xPathFragment.getPrefix()); if(null == uri && null != xPathFragment.getPrefix()) { throw XMLMarshalException.namespaceNotFound(xPathFragment.getShortName()); } xPathFragment.setNamespaceURI(uri); } } else if(!xPathFragment.isAttribute() && null != namespaceResolver) { xPathFragment.setNamespaceURI(namespaceResolver.getDefaultNamespaceURI()); } } } XPathFragment nextXPathFragment = xPathFragment.getNextFragment(); if(null != nextXPathFragment) { initializeXPathFragment(nextXPathFragment); } }
private void initializeXPathFragment(XPathFragment xPathFragment) { XPathPredicate predicate = xPathFragment.getPredicate(); if(null != predicate) { initializeXPathFragment(predicate.getXPathFragment()); } String localName = xPathFragment.getLocalName(); if(localName !=null && !localName.equals(XMLConstants.EMPTY_STRING)){ if(null == xPathFragment.getNamespaceURI()) { if(xPathFragment.hasNamespace()) { if(null == namespaceResolver) { throw XMLMarshalException.namespaceNotFound(xPathFragment.getShortName()); } else { String uri = namespaceResolver.resolveNamespacePrefix(xPathFragment.getPrefix()); if(null == uri && null != xPathFragment.getPrefix()) { throw XMLMarshalException.namespaceNotFound(xPathFragment.getShortName()); } xPathFragment.setNamespaceURI(uri); } } else if(!xPathFragment.isAttribute() && null != namespaceResolver) { xPathFragment.setNamespaceURI(namespaceResolver.getDefaultNamespaceURI()); } } } XPathFragment nextXPathFragment = xPathFragment.getNextFragment(); if(null != nextXPathFragment) { initializeXPathFragment(nextXPathFragment); } }
String currentPath = ""; while(fragment != null && !(fragment.nameIsText()) && !(fragment.isAttribute())) { if(fragment.getPredicate() != null) { predicatePath += "/"; predicatePath += fragment.getPredicate().getXPathFragment().getXPath(); predicateProperty.setXmlPath(predicatePath); predicateProperty.setIsAttribute(true);
String currentPath = ""; while(fragment != null && !(fragment.nameIsText()) && !(fragment.isAttribute())) { if(fragment.getPredicate() != null) { predicatePath += "/"; predicatePath += fragment.getPredicate().getXPathFragment().getXPath(); predicateProperty.setXmlPath(predicatePath); predicateProperty.setIsAttribute(true);
if (frag.containsIndex() || frag.getPredicate() != null || (!next.isXmlList() && null != nextFragment && nextFragment.isAttribute() && helper.isCollectionType(next.getType()))) { currentElement.setMaxOccurs(Occurs.UNBOUNDED); if (frag.containsIndex() || frag.getPredicate() != null || helper.isCollectionType(next.getType())) { currentElement.setMaxOccurs(Occurs.UNBOUNDED);
if (frag.containsIndex() || frag.getPredicate() != null || (!next.isXmlList() && null != nextFragment && nextFragment.isAttribute() && helper.isCollectionType(next.getType()))) { currentElement.setMaxOccurs(Occurs.UNBOUNDED); if (frag.containsIndex() || frag.getPredicate() != null || helper.isCollectionType(next.getType())) { currentElement.setMaxOccurs(Occurs.UNBOUNDED);