Пример #1
0
 //
 //通用节点遍历方法
 //
 private void foreachNode(ForeachOperator rForeachOperator)
 {
     if (null == m_rRoot)
     {
         return;
     }
     foreachNodeHelper(m_rRoot, rForeachOperator);
 }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        //
        //计算套装各个母系列的最后一个子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);
        }