コード例 #1
0
        private static ITarget LoadTarget(XElement element)
        {
            if (element.Name == "seq")
            {
                var target = new MapSequence();
                target.Action = LoadAction(element);
                foreach (var sub in element.Elements())
                {
                    var minCnt   = 1;
                    var maxCnt   = 1;
                    var handle   = true;
                    var maximize = false;

                    foreach (var attr in sub.Attributes())
                    {
                        var name = attr.Name.LocalName;
                        if (name.StartsWith("s-"))
                        {
                            name = name.Substring(2);
                            if (name == "min")
                            {
                                minCnt = int.Parse(attr.Value);
                            }
                            else if (name == "max")
                            {
                                maxCnt = int.Parse(attr.Value);
                            }
                            else if (name == "handle")
                            {
                                handle = bool.Parse(attr.Value);
                            }
                            else if (name == "maximize")
                            {
                                maximize = bool.Parse(attr.Value);
                            }
                        }
                    }

                    var subTarget = LoadTarget(sub);

                    target.Sequence.Add(new MapSequence.SequenceToken
                    {
                        MinCount       = minCnt,
                        MaxCount       = maxCnt,
                        ActionHandling = handle,
                        Target         = subTarget,
                        Maximize       = maximize
                    });
                }
                return(target);
            }
            else
            {
                var target = new MapTarget();
                target.Action = LoadAction(element);
                foreach (var attr in element.Attributes())
                {
                    var name = attr.Name.LocalName;
                    if (!name.Contains("-") && name != "h")
                    {
                        target.TagFilter[name] = StringFilter.Parse(attr.Value);
                    }
                }
                return(target);
            }
            throw new Exception("Unknown target");
        }