Example #1
0
        public JToken LoadXml(XElement xmlDoc)
        {
            var topNode = xmlDoc.Element("dict").Element("array");

            this.Items = new List <IPlistXmlItem>();

            IPlistXmlItem tempItem = null;

            foreach (var node in topNode.Elements())
            {
                tempItem = LoadXmlNode(node);
                if (null != tempItem)
                {
                    tempItem.Uid = this.Items.Count;
                    this.Items.Add(tempItem);
                }
                else
                {
                    tempItem     = new PListXmlItemString();
                    tempItem.Uid = this.Items.Count;
                    this.Items.Add(tempItem);
                }
            }

            PListXmlItemDict root = this.Items[1] as PListXmlItemDict;

            return(GetJObject(root));
        }
Example #2
0
        private JToken GetJObject(PListXmlItemDict dict)
        {
            if (dict.Value.Count == 2 && dict.Value.Keys.Contains("NS.objects") && dict.Value.Keys.Contains("$class"))
            {
                return(GetJToken(dict.Value["NS.objects"]));
            }
            if (dict.Value.Count == 2 && dict.Value.Keys.Contains("NS.string") && dict.Value.Keys.Contains("$class"))
            {
                return(GetJToken(dict.Value["NS.string"]));
            }
            else if (dict.Value.Count == 3 && dict.Value.Keys.Contains("NS.objects") && dict.Value.Keys.Contains("NS.keys") && dict.Value.Keys.Contains("$class") &&
                     dict.Value["NS.objects"] is PListXmlItemArray && dict.Value["NS.keys"] is PListXmlItemArray)
            {
                return(GetJToken(dict.Value["NS.keys"] as PListXmlItemArray, dict.Value["NS.objects"] as PListXmlItemArray));
            }
            else
            {
                JObject jRoot = new JObject();

                foreach (var item in dict.Value)
                {
                    jRoot.Add(item.Key, GetJToken(item.Value));
                }

                return(jRoot);
            }
        }
Example #3
0
        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);
        }