amassari 2004/02/12 05:40:33
Modified: c/src/xercesc/dom/impl DOMNodeImpl.cpp
Log:
Implemented setTextContent (patch by Erik Rydgren)
Revision Changes Path
1.30 +48 -3 xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp
Index: DOMNodeImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMNodeImpl.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- DOMNodeImpl.cpp 29 Jan 2004 11:44:27 -0000 1.29
+++ DOMNodeImpl.cpp 12 Feb 2004 13:40:32 -0000 1.30
@@ -1029,8 +1029,53 @@
}
-void DOMNodeImpl::setTextContent(const XMLCh*){
- throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0);
+void DOMNodeImpl::setTextContent(const XMLCh* textContent){
+ DOMNode *thisNode = castToNode(this);
+ switch (thisNode->getNodeType())
+ {
+ case DOMNode::ELEMENT_NODE:
+ case DOMNode::ENTITY_NODE:
+ case DOMNode::ENTITY_REFERENCE_NODE:
+ case DOMNode::DOCUMENT_FRAGMENT_NODE:
+ {
+ if (isReadOnly())
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0);
+
+ // Remove all childs
+ DOMNode* current = thisNode->getFirstChild();
+ while (current != NULL)
+ {
+ thisNode->removeChild(current);
+ current = thisNode->getFirstChild();
+ }
+ if (textContent != NULL)
+ {
+ // Add textnode containing data
+ current =
((DOMDocumentImpl*)thisNode->getOwnerDocument())->createTextNode(textContent);
+ thisNode->appendChild(current);
+ }
+ }
+ break;
+
+ case DOMNode::ATTRIBUTE_NODE:
+ case DOMNode::TEXT_NODE:
+ case DOMNode::CDATA_SECTION_NODE:
+ case DOMNode::COMMENT_NODE:
+ case DOMNode::PROCESSING_INSTRUCTION_NODE:
+ if (isReadOnly())
+ throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0);
+
+ thisNode->setNodeValue(textContent);
+ break;
+
+ case DOMNode::DOCUMENT_NODE:
+ case DOMNode::DOCUMENT_TYPE_NODE:
+ case DOMNode::NOTATION_NODE:
+ break;
+
+ default:
+ throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]