111 строки
3.4 KiB
C#
111 строки
3.4 KiB
C#
|
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Xml;
|
|||
|
|
|||
|
namespace xharness
|
|||
|
{
|
|||
|
static class PListExtensions
|
|||
|
{
|
|||
|
public static void LoadWithoutNetworkAccess (this XmlDocument doc, string filename)
|
|||
|
{
|
|||
|
using (var fs = new FileStream (filename, FileMode.Open, FileAccess.Read)) {
|
|||
|
var settings = new XmlReaderSettings ()
|
|||
|
{
|
|||
|
XmlResolver = null,
|
|||
|
DtdProcessing = DtdProcessing.Parse,
|
|||
|
};
|
|||
|
using (var reader = XmlReader.Create (fs, settings)) {
|
|||
|
doc.Load (reader);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static void SetMinimumOSVersion (this XmlDocument plist, string value)
|
|||
|
{
|
|||
|
SetPListStringValue (plist, "MinimumOSVersion", value);
|
|||
|
}
|
|||
|
|
|||
|
public static string GetMinimumOSVersion (this XmlDocument plist)
|
|||
|
{
|
|||
|
return GetPListStringValue (plist, "MinimumOSVersion");
|
|||
|
}
|
|||
|
|
|||
|
public static void SetCFBundleIdentifier (this XmlDocument plist, string value)
|
|||
|
{
|
|||
|
SetPListStringValue (plist, "CFBundleIdentifier", value);
|
|||
|
}
|
|||
|
|
|||
|
public static void SetCFBundleName (this XmlDocument plist, string value)
|
|||
|
{
|
|||
|
SetPListStringValue (plist, "CFBundleName", value);
|
|||
|
}
|
|||
|
|
|||
|
public static void SetUIDeviceFamily (this XmlDocument plist, params int[] families)
|
|||
|
{
|
|||
|
SetPListArrayOfIntegerValues (plist, "UIDeviceFamily", families);
|
|||
|
}
|
|||
|
|
|||
|
public static string GetCFBundleIdentifier (this XmlDocument plist)
|
|||
|
{
|
|||
|
return GetPListStringValue (plist, "CFBundleIdentifier");
|
|||
|
}
|
|||
|
|
|||
|
public static string GetPListStringValue (this XmlDocument plist, string node)
|
|||
|
{
|
|||
|
return plist.SelectSingleNode ("//dict/key[text()='" + node + "']").NextSibling.InnerText;
|
|||
|
}
|
|||
|
|
|||
|
public static void SetPListStringValue (this XmlDocument plist, string node, string value)
|
|||
|
{
|
|||
|
plist.SelectSingleNode ("//dict/key[text()='" + node + "']").NextSibling.InnerText = value;
|
|||
|
}
|
|||
|
|
|||
|
public static void AddPListStringValue (this XmlDocument plist, string node, string value)
|
|||
|
{
|
|||
|
var keyElement = plist.CreateElement ("key");
|
|||
|
keyElement.InnerText = node;
|
|||
|
var valueElement = plist.CreateElement ("string");
|
|||
|
valueElement.InnerText = value;
|
|||
|
var root = plist.SelectSingleNode ("//dict");
|
|||
|
root.AppendChild (keyElement);
|
|||
|
root.AppendChild (valueElement);
|
|||
|
}
|
|||
|
|
|||
|
public static void AddPListKeyValuePair (this XmlDocument plist, string node, string valueType, string value)
|
|||
|
{
|
|||
|
var keyElement = plist.CreateElement ("key");
|
|||
|
keyElement.InnerText = node;
|
|||
|
var valueElement = plist.CreateElement (valueType);
|
|||
|
valueElement.InnerXml = value;
|
|||
|
var root = plist.SelectSingleNode ("//dict");
|
|||
|
root.AppendChild (keyElement);
|
|||
|
root.AppendChild (valueElement);
|
|||
|
}
|
|||
|
|
|||
|
public static void SetPListArrayOfIntegerValues (this XmlDocument plist, string node, params int[] values)
|
|||
|
{
|
|||
|
var key = plist.SelectSingleNode ("//dict/key[text()='" + node + "']");
|
|||
|
key.ParentNode.RemoveChild (key.NextSibling);
|
|||
|
var array = plist.CreateElement ("array");
|
|||
|
foreach (var value in values) {
|
|||
|
var element = plist.CreateElement ("integer");
|
|||
|
element.InnerText = value.ToString ();
|
|||
|
array.AppendChild (element);
|
|||
|
}
|
|||
|
key.ParentNode.InsertAfter (array, key);
|
|||
|
}
|
|||
|
|
|||
|
public static void RemoveUIRequiredDeviceCapabilities (this XmlDocument plist)
|
|||
|
{
|
|||
|
var key = plist.SelectSingleNode ("//dict/key[text()='UIRequiredDeviceCapabilities']");
|
|||
|
key.ParentNode.RemoveChild (key.NextSibling);
|
|||
|
key.ParentNode.RemoveChild (key);
|
|||
|
}
|
|||
|
|
|||
|
public static bool ContainsKey (this XmlDocument plist, string key)
|
|||
|
{
|
|||
|
return plist.SelectSingleNode ("//dict/key[text()='" + key + "']") != null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|