private static XElement WriteElement(PlistElement el)
 {
     if (el is PlistElementBoolean)
     {
         var realEl = el as PlistElementBoolean;
         return(new XElement(realEl.value ? "true" : "false"));
     }
     if (el is PlistElementInteger)
     {
         var realEl = el as PlistElementInteger;
         return(new XElement("integer", realEl.value.ToString()));
     }
     if (el is PlistElementString)
     {
         var realEl = el as PlistElementString;
         return(new XElement("string", realEl.value));
     }
     if (el is PlistElementDict)
     {
         var realEl  = el as PlistElementDict;
         var dictXml = new XElement("dict");
         foreach (var kv in realEl.values)
         {
             var keyXml   = new XElement("key", kv.Key);
             var valueXml = WriteElement(kv.Value);
             if (valueXml != null)
             {
                 dictXml.Add(keyXml);
                 dictXml.Add(valueXml);
             }
         }
         return(dictXml);
     }
     if (el is PlistElementArray)
     {
         var realEl   = el as PlistElementArray;
         var arrayXml = new XElement("array");
         foreach (var v in realEl.values)
         {
             var elXml = WriteElement(v);
             if (elXml != null)
             {
                 arrayXml.Add(elXml);
             }
         }
         return(arrayXml);
     }
     return(null);
 }
 private static XElement WriteElement(PlistElement el)
 {
     if (el is PlistElementBoolean)
     {
         var realEl = el as PlistElementBoolean;
         return new XElement(realEl.value ? "true" : "false");
     }
     if (el is PlistElementInteger)
     {
         var realEl = el as PlistElementInteger;
         return new XElement("integer", realEl.value.ToString());
     }
     if (el is PlistElementString)
     {
         var realEl = el as PlistElementString;
         return new XElement("string", realEl.value);
     }
     if (el is PlistElementDict)
     {
         var realEl = el as PlistElementDict;
         var dictXml = new XElement("dict");
         foreach (var kv in realEl.values)
         {
             var keyXml = new XElement("key", kv.Key);
             var valueXml = WriteElement(kv.Value);
             if (valueXml != null)
             {
                 dictXml.Add(keyXml);
                 dictXml.Add(valueXml);
             }
         }
         return dictXml;
     }
     if (el is PlistElementArray)
     {
         var realEl = el as PlistElementArray;
         var arrayXml = new XElement("array");
         foreach (var v in realEl.values)
         {
             var elXml = WriteElement(v);
             if (elXml != null)
                 arrayXml.Add(elXml);
         }
         return arrayXml;
     }
     return null;
 }