use of org.exist.dom.QName in project exist by eXist-db.
the class ElementImpl method setAttribute.
@Override
public void setAttribute(final String name, final String value) throws DOMException {
final QName qname;
try {
if (document.context != null) {
qname = QName.parse(document.context, name);
} else {
qname = new QName(name);
}
} catch (final IllegalQNameException e) {
throw new DOMException(DOMException.INVALID_CHARACTER_ERR, e.getMessage());
}
// check the QName is valid for use
if (qname.isValid(false) != QName.Validity.VALID.val) {
throw new DOMException(DOMException.INVALID_CHARACTER_ERR, "name is invalid");
}
setAttribute(qname, value, qn -> getAttributeNode(qn.getLocalPart()));
}
use of org.exist.dom.QName in project exist by eXist-db.
the class ElementImpl method getAttributeNS.
@Override
public String getAttributeNS(final String namespaceURI, final String localName) {
int attr = document.alpha[nodeNumber];
if (-1 < attr) {
while (attr < document.nextAttr && document.attrParent[attr] == nodeNumber) {
final QName name = document.attrName[attr];
if (name.getLocalPart().equals(localName) && name.getNamespaceURI().equals(namespaceURI)) {
return document.attrValue[attr];
}
++attr;
}
}
if (Namespaces.XMLNS_NS.equals(namespaceURI)) {
int ns = document.alphaLen[nodeNumber];
if (-1 < ns) {
while (ns < document.nextNamespace && document.namespaceParent[ns] == nodeNumber) {
final QName nsQName = document.namespaceCode[ns];
if (nsQName.getLocalPart().equals(localName)) {
return nsQName.getNamespaceURI();
}
++ns;
}
}
}
return null;
}
use of org.exist.dom.QName in project exist by eXist-db.
the class ElementImpl method getElementsByTagNameNS.
@Override
public NodeList getElementsByTagNameNS(final String namespaceURI, final String localName) {
final boolean wildcardNS = namespaceURI != null && namespaceURI.equals(QName.WILDCARD);
final boolean wildcardLocalPart = localName != null && localName.equals(QName.WILDCARD);
if (wildcardNS && wildcardLocalPart) {
return getElementsByTagName(QName.WildcardQName.getInstance());
} else if (wildcardNS) {
return getElementsByTagName(new QName.WildcardNamespaceURIQName(localName));
} else if (wildcardLocalPart) {
return getElementsByTagName(new QName.WildcardLocalPartQName(namespaceURI));
} else {
final QName qname;
if (document.getContext() != null) {
try {
qname = QName.parse(document.context, localName, namespaceURI);
} catch (final IllegalQNameException e) {
throw new DOMException(DOMException.INVALID_CHARACTER_ERR, e.getMessage());
}
} else {
qname = new QName(localName, namespaceURI);
}
return getElementsByTagName(qname);
}
}
use of org.exist.dom.QName in project exist by eXist-db.
the class ElementImpl method getPrefixes.
/**
* The method <code>getPrefixes.</code>
*
* @return a <code>Set</code> value
*/
public Set<String> getPrefixes() {
final Set<String> set = new HashSet<>();
int ns = document.alphaLen[nodeNumber];
if (-1 < ns) {
while (ns < document.nextNamespace && document.namespaceParent[ns] == nodeNumber) {
final QName nsQName = document.namespaceCode[ns];
set.add(nsQName.getStringValue());
++ns;
}
}
return set;
}
use of org.exist.dom.QName in project exist by eXist-db.
the class ElementImpl method getAttributeNode.
@Override
public Attr getAttributeNode(final String name) {
int attr = document.alpha[nodeNumber];
if (-1 < attr) {
while (attr < document.nextAttr && document.attrParent[attr] == nodeNumber) {
final QName attrQName = document.attrName[attr];
if (attrQName.getStringValue().equals(name)) {
return new AttrImpl(document, attr);
}
++attr;
}
}
if (name.startsWith(XMLConstants.XMLNS_ATTRIBUTE + ":")) {
int ns = document.alphaLen[nodeNumber];
if (-1 < ns) {
while (ns < document.nextNamespace && document.namespaceParent[ns] == nodeNumber) {
final QName nsQName = document.namespaceCode[ns];
if (nsQName.getStringValue().equals(name)) {
return new NamespaceNode(document, ns);
}
++ns;
}
}
}
return null;
}
Aggregations