Я не знаю ни о каком готовом Python css minifiers, но как Вы сказал, что css utils имеет опцию. После проверки и проверяя, что лицензия допускает его, Вы могли пройти исходный код и отрезать части, которые делают уменьшение себя. Тогда засуньте это в единственный сценарий и вуаля! Там Вы идете.
Как преимущество, функция csscombine в.../trunk/src/cssutils/script.py, кажется, делает работу уменьшения где-нибудь вокруг строки 361 (я проверил пересмотр 1499). Обратите внимание, что названный аргумент булевой функции "уменьшает".
Для сериализации в XML класс Uri
должен иметь конструктор без параметров, чего в нем нет: Uri
спроектирован так, чтобы быть неизменным . Честно говоря, я не понимаю, почему нельзя сериализовать без конструктора без параметров.
Чтобы обойти это, либо измените тип свойства URI
на строку
или добавьте еще одно свойство с именем _URI
, отметьте URI
с помощью XmlIgnoreAttribute
и перепишите его метод get
как get {return new Ури (_URI); }
.
Вы путаете двоичную сериализацию с сериализацией XML.
Сериализация XML - это очень простой процесс, который сохраняет значения полей и восстанавливает их в новый объект.
Двоичная сериализация - это очень много. более мощный и позволяет объекту управлять поведением сериализации. Интерфейс ISerializable , который действительно реализует Uri, используется только для двоичной сериализации.
Inner exceptions says:
System.Uri cannot be serialized because it does not have a parameterless constructor.
Simple answer is that you can't serialize that to xml.
На самом деле, лучшим решением было бы обратное - сохранение значения в свойстве Uri и доступ к нему с помощью строки.
Например:
public class Server
{
public string Name { get; set; }
[XmlIgnore]
public Uri Uri { get; set; }
[XmlElement("URI")]
public string UriString {
get { return Uri.ToString(); }
set { Uri = new Uri(value); }
}
}
Таким образом, невозможно установить его на недопустимый Uri (который в вашем коде вызовет исключение в средстве получения свойства). Кроме того, чтобы следовать стандартным рекомендациям по корпусу .Net, свойство должно называться Uri
, а не URI
.