public void TraverseAllXmlNodes(ref EachNodeCallback nodeAction) { XmlNodeList nodes; TRAVERSE_OPTION traverseOption; nodes = RootNodes; traverseOption = TRAVERSE_OPTION.ALL; foreach (XmlNode node in nodes) { traverseOption = recTraverseXmlNode(node, ref nodeAction); if (traverseOption == TRAVERSE_OPTION.NONE_FINISH) { break; } } }
private TRAVERSE_OPTION recTraverseXmlNode(XmlNode xmlNode, ref EachNodeCallback nodeAction) { bool hasChildNodes; TRAVERSE_OPTION traverseOption; hasChildNodes = xmlNode.HasChildNodes; traverseOption = nodeAction(xmlNode, !hasChildNodes); if (hasChildNodes && (traverseOption == TRAVERSE_OPTION.ALL)) { foreach (XmlNode x in xmlNode.ChildNodes) { traverseOption = recTraverseXmlNode(x, ref nodeAction); if (traverseOption == TRAVERSE_OPTION.NONE_FINISH) { break; } } } return traverseOption; }
private TRAVERSE_OPTION recTraverseXmlNode(XmlNode xmlNode, ref EachNodeCallback nodeAction) { bool hasChildNodes; TRAVERSE_OPTION traverseOption; hasChildNodes = xmlNode.HasChildNodes; traverseOption = nodeAction(xmlNode, !hasChildNodes); if (hasChildNodes && (traverseOption == TRAVERSE_OPTION.ALL)) { foreach (XmlNode x in xmlNode.ChildNodes) { traverseOption = recTraverseXmlNode(x, ref nodeAction); if (traverseOption == TRAVERSE_OPTION.NONE_FINISH) { break; } } } return(traverseOption); }