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]

Reply via email to