// //通用节点遍历方法 // private void foreachNode(ForeachOperator rForeachOperator) { if (null == m_rRoot) { return; } foreachNodeHelper(m_rRoot, rForeachOperator); }
private void foreachNodeHelper(XmlNode rNode, ForeachOperator rForeachOperator) { var x = rNode.ChildNodes; if (x.Count <= 0) { return; } for (int i = 0; i < x.Count; i++) { if (rForeachOperator(x[i])) { foreachNodeHelper(x[i], rForeachOperator); } } }
// //计算套装各个母系列的最后一个子ID // private void calcMatherIDMap() { ForeachOperator rOperator = new ForeachOperator((XmlNode rNode) => { if (rNode.Name == "Clothset") { m_rLastClothsetNode = rNode; if (null != rNode.Attributes) { int nMather = int.Parse(rNode.Attributes["set_id"].Value) / 100000; int nSubID = int.Parse(rNode.Attributes["set_id"].Value); if (m_rMatherIDLast.ContainsKey(nMather)) { int nOldID = m_rMatherIDLast[nMather]; m_rMatherIDLast[nMather] = nOldID < nSubID ? nSubID : nOldID; } else { m_rMatherIDLast.Add(nMather, nSubID); } if (!m_rClothsetMap.ContainsKey(nSubID.ToString())) { m_rClothsetMap.Add(nSubID.ToString(), rNode); } return(false); } } else { if (rNode.Name == "PieceObtainText") { for (int index = 0; index < rNode.ChildNodes.Count; ++index) { if (rNode.ChildNodes[index].Name == "text") { m_rPiecesSourceExsitMap.Add(rNode.ChildNodes[index + 1].Value, rNode.ChildNodes[index].Attributes["context"].Value); } index++; } m_rPieceSourceParent = rNode; } else if (rNode.Name == "ClothsetObtainText") { for (int index = 0; index < rNode.ChildNodes.Count; ++index) { if (rNode.ChildNodes[index].Name == "text") { m_rPartsSourceExsitMap.Add(rNode.ChildNodes[index].Attributes["obtain_id"].Value, rNode.ChildNodes[index].Attributes["context"].Value); } index++; } this.m_rPartSouceParent = rNode; } else if (rNode.Name == "ExtraRewards") { m_rLastRewardsNode = rNode; } } return(true); }); foreachNode(rOperator); }