Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Deleting Nodes from an XML Document Tree
Source Code Listing // Delete Keyword nodes from the XML Document (crisp.xml), and // add them to a new document where the keyword // is the tag, without duplicates. void RemoveKeywords(void) { // Load the input document. CkXml xml; xml.LoadXmlFile("crisp.xml"); // Create the output XML document in-memory CkXml outXml; outXml.put_Tag("unique_keywords"); // Iterate over the "DOC" nodes by calling FirstChild // followed by NextSibling2 repeatedly until it returns false. CkXml *node = xml.FirstChild(); while (node) { // Iterate over the Keyword nodes, remove each, and add it to // our new XML document. (Note that the search happens at the // subtree rooted at our current node, and not the entire XML document.) CkXml *kNode = node->SearchForTag(0,"Keyword"); while (kNode) { // Get the keyword and prep it to become a tag. CkString tagStr; kNode->get_Content(tagStr); tagStr.trim2(); tagStr.replaceAllOccurances(" ","_"); tagStr.removeCharOccurances('/'); tagStr.removeCharOccurances('('); tagStr.removeCharOccurances(')'); tagStr.removeCharOccurances('+'); tagStr.removeCharOccurances('\''); tagStr.removeCharOccurances('='); tagStr.removeCharOccurances('"'); // Tags cannot begin with numerics. if (tagStr.charAt(0) <= '9' && tagStr.charAt(0) >= '0') { tagStr.prepend("A_"); } // Only add the new node if the keyword doesn't already exist. CkXml *tempNode = outXml.FindOrAddNewChild(tagStr.getString()); delete tempNode; // Move forward to the next Keyword CkXml *curNode = kNode; kNode = node->SearchForTag(curNode,"Keyword"); // Remove the keyword that was just processed from the XML document. curNode->RemoveFromTree(); delete curNode; } // Move to the next sibling. The internal reference within node is updated // to the node's next sibling. If no siblings remain, it returns false. if (!node->NextSibling2()) { delete node; node = 0; } } // Save the unique keywords. outXml.SaveXml("UniqueKeywords.xml"); // Save the original document with all the keywords removed. xml.SaveXml("KeywordsRemoved.xml"); return; }
|
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.