Changeset 17:56187719adda in rrlib_xml


Ignore:
Timestamp:
24.12.2010 23:45:42 (9 years ago)
Author:
Tobias Föhst <foehst@…>
Branch:
default
Phase:
public
Convert:
svn:3219ad6e-c0b7-4ac2-9554-e22e195eef7a/trunk@18
Message:

Fixed bug that made source nodes disappear in AddChildNode and AddNextSibling even during copy

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • tXMLNode.cpp

    r16 r17  
    117117{ 
    118118  tXMLNode *child = &node; 
     119  if (copy) 
     120  { 
     121    child = reinterpret_cast<tXMLNode *>(xmlDocCopyNode(child, this->doc, 1)); 
     122  } 
    119123  if (child->doc != this->doc) 
    120124  { 
    121125    xmlUnlinkNode(child); 
    122   } 
    123   if (copy) 
    124   { 
    125     child = reinterpret_cast<tXMLNode *>(xmlDocCopyNode(child, this->doc, 1)); 
    126126  } 
    127127  if (this->IsInSubtreeOf(*child)) 
     
    175175{ 
    176176  tXMLNode *sibling = &node; 
     177  if (copy) 
     178  { 
     179    sibling = reinterpret_cast<tXMLNode *>(xmlDocCopyNode(sibling, this->doc, 1)); 
     180  } 
    177181  if (sibling->doc != this->doc) 
    178182  { 
    179183    xmlUnlinkNode(sibling); 
    180   } 
    181   if (copy) 
    182   { 
    183     sibling = reinterpret_cast<tXMLNode *>(xmlDocCopyNode(sibling, this->doc, 1)); 
    184184  } 
    185185  if (this->IsInSubtreeOf(*sibling)) 
  • test/test_xml2_wrapper.cpp

    r16 r17  
    150150  std::cout << "doc 2: " << document2.GetRootNode().GetXMLDump() << std::endl; 
    151151 
    152   tXMLDocument document3; 
     152  { 
     153    tXMLDocument document3; 
    153154 
    154   document3.AddRootNode("foo"); 
     155    document3.AddRootNode("foo"); 
    155156 
    156   xmlNewChild(reinterpret_cast<xmlNode *>(&document3.GetRootNode()), 0, reinterpret_cast<const xmlChar *>("child1"), reinterpret_cast<const xmlChar *>("text1")); 
    157   xmlNewChild(reinterpret_cast<xmlNode *>(&document3.GetRootNode().GetFirstChild()), 0, reinterpret_cast<const xmlChar *>("child2"), reinterpret_cast<const xmlChar *>("text2")); 
     157    xmlNewChild(reinterpret_cast<xmlNode *>(&document3.GetRootNode()), 0, reinterpret_cast<const xmlChar *>("child1"), reinterpret_cast<const xmlChar *>("text1")); 
     158    xmlNewChild(reinterpret_cast<xmlNode *>(&document3.GetRootNode().GetFirstChild()), 0, reinterpret_cast<const xmlChar *>("child2"), reinterpret_cast<const xmlChar *>("text2")); 
    158159 
    159   xmlNodeAddContent(reinterpret_cast<xmlNode *>(&document3.GetRootNode().GetFirstChild()), reinterpret_cast<const xmlChar *>("text3")); 
     160    xmlNodeAddContent(reinterpret_cast<xmlNode *>(&document3.GetRootNode().GetFirstChild()), reinterpret_cast<const xmlChar *>("text3")); 
    160161 
    161   std::cout << "doc 3: " << document3.GetRootNode().GetXMLDump() << std::endl; 
     162    std::cout << "doc 3: " << document3.GetRootNode().GetXMLDump() << std::endl; 
    162163 
    163   std::cout << "content = " << document3.GetRootNode().GetFirstChild().GetTextContent() << std::endl; 
     164    std::cout << "content = " << document3.GetRootNode().GetFirstChild().GetTextContent() << std::endl; 
    164165 
    165   document3.GetRootNode().GetFirstChild().RemoveTextContent(); 
     166    document3.GetRootNode().GetFirstChild().RemoveTextContent(); 
    166167 
    167   std::cout << "content = " << document3.GetRootNode().GetFirstChild().GetTextContent() << std::endl; 
     168    std::cout << "content = " << document3.GetRootNode().GetFirstChild().GetTextContent() << std::endl; 
    168169 
    169   for (tXMLNode::iterator it = document3.GetRootNode().GetFirstChild().GetChildrenBegin(); it != document3.GetRootNode().GetFirstChild().GetChildrenEnd(); ++it) 
    170   { 
    171     std::cout << "child: " << it->GetXMLDump() << std::endl; 
     170    for (tXMLNode::iterator it = document3.GetRootNode().GetFirstChild().GetChildrenBegin(); it != document3.GetRootNode().GetFirstChild().GetChildrenEnd(); ++it) 
     171    { 
     172      std::cout << "child: " << it->GetXMLDump() << std::endl; 
     173    } 
     174 
     175    document1.GetRootNode().AddChildNode(document3.GetRootNode().GetFirstChild()); 
    172176  } 
    173177 
     178 
     179  std::cout << "doc 1: " << document1.GetRootNode().GetXMLDump() << std::endl; 
    174180 
    175181 
Note: See TracChangeset for help on using the changeset viewer.