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)); }
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); }