Attr* Element::setAttributeNodeNS(Attr* newAttr) { poco_check_ptr (newAttr); if (newAttr->ownerDocument() != ownerDocument()) throw DOMException(DOMException::WRONG_DOCUMENT_ERR); if (newAttr->ownerElement()) throw DOMException(DOMException::INUSE_ATTRIBUTE_ERR); Attr* oldAttr = getAttributeNodeNS(newAttr->namespaceURI(), newAttr->localName()); if (oldAttr) removeAttributeNode(oldAttr); Attr* pCur = _pFirstAttr; if (pCur) { while (pCur->_pNext) pCur = static_cast<Attr*>(pCur->_pNext); pCur->_pNext = newAttr; } else _pFirstAttr = newAttr; newAttr->_pParent = this; newAttr->duplicate(); if (_pOwner->events()) dispatchAttrModified(newAttr, MutationEvent::ADDITION, EMPTY_STRING, newAttr->getValue()); return oldAttr; }
const XMLString& Element::getAttributeNS(const XMLString& namespaceURI, const XMLString& localName) const { Attr* pAttr = getAttributeNodeNS(namespaceURI, localName); if (pAttr) return pAttr->getValue(); else return EMPTY_STRING; }
void DOMElementImpl::setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); DOMAttr *attr = getAttributeNodeNS(namespaceURI, localName); if (!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0); ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); }
void Element::setAttributeNS(const XMLString& namespaceURI, const XMLString& qualifiedName, const XMLString& value) { Attr* pAttr = getAttributeNodeNS(namespaceURI, qualifiedName); if (pAttr) { pAttr->setValue(value); } else { pAttr = _pOwner->createAttributeNS(namespaceURI, qualifiedName); pAttr->setValue(value); setAttributeNodeNS(pAttr); pAttr->release(); } }
void DOMElementImpl::setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMAttr *attr = getAttributeNodeNS(namespaceURI, localName); if (!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); if(isId) ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); else ((DOMAttrImpl *)attr)->removeAttrFromIDNodeMap(); }
void DOMElementImpl::setAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, const XMLCh *fValue) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); DOMAttr* newAttr = getAttributeNodeNS(fNamespaceURI, qualifiedName); if (!newAttr) { newAttr = this->fNode.getOwnerDocument()->createAttributeNS(fNamespaceURI, qualifiedName); fAttributes->setNamedItemNS(newAttr); } newAttr->setNodeValue(fValue); }
void DOMElementImpl::setIdAttributeNode(const DOMAttr *idAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); DOMAttr *attr; const XMLCh* localName = idAttr->getLocalName(); if (localName) attr = getAttributeNodeNS(idAttr->getNamespaceURI(), idAttr->getLocalName()); else attr = getAttributeNode(idAttr->getName()); if(!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0); ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); }
void DOMElementImpl::setAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, const XMLCh *fValue) { if (fNode.isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); if (index < 0) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); DOMAttr* newAttr = getAttributeNodeNS(fNamespaceURI, qualifiedName+index); if (!newAttr) { newAttr = fParent.fOwnerDocument->createAttributeNS(fNamespaceURI, qualifiedName); fAttributes->setNamedItemNS(newAttr); } newAttr->setNodeValue(fValue); }
bool DOMElementImpl::hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const { return (getAttributeNodeNS(namespaceURI, localName) != 0); }
bool Element::hasAttributeNS(const XMLString& namespaceURI, const XMLString& localName) const { return getAttributeNodeNS(namespaceURI, localName) != 0; }
void Element::removeAttributeNS(const XMLString& namespaceURI, const XMLString& localName) { Attr* pAttr = getAttributeNodeNS(namespaceURI, localName); if (pAttr) removeAttributeNode(pAttr); }
bool Element::hasAttributeNS(DOMString* namespaceURI, DOMString* localName) { return (getAttributeNodeNS(namespaceURI, localName) != NULL); }