private JArray GetJArray(PListXmlItemArray array)
        {
            JArray jArr = new JArray();

            foreach (var item in array.Value)
            {
                jArr.Add(GetJToken(item));
            }

            return(jArr);
        }
        public static IPlistXmlItem LoadXmlNode(XElement node)
        {
            IPlistXmlItem tempItem = null;

            switch (node.Name.LocalName)
            {
            case "string":
            case "ustring":
                tempItem = new PListXmlItemString();
                break;

            case "dict":
                tempItem = new PListXmlItemDict();
                break;

            case "integer":
                tempItem = new PListXmlItemInteger();
                break;

            case "array":
                tempItem = new PListXmlItemArray();
                break;

            case "uid":
                tempItem = new PListXmlItemUid();
                break;

            case "false":
                tempItem = new PListXmlItemFalse();
                break;

            case "true":
                tempItem = new PListXmlItemTrue();
                break;

            default:
                tempItem = null;
                break;
            }
            if (null != tempItem)
            {
                tempItem.Load(node);
            }

            return(tempItem);
        }
        private JToken GetJToken(PListXmlItemArray keys, PListXmlItemArray values)
        {
            if (keys.Value.Count != values.Value.Count)
            {
                return(string.Empty);
            }

            JObject res = new JObject();

            for (int pos = 0; pos < keys.Value.Count; pos++)
            {
                res.Add((this.Items[(keys.Value[pos] as PListXmlItemUid).Value] as PListXmlItemString).Value,
                        GetJToken(values.Value[pos]));
            }

            return(res);
        }