Похоже, это может быть вызвано разными причинами. Хотя в моем случае это вызвано тем, что «ОС Windows не может обрабатывать слишком длинный путь», поэтому «aapt.exe» сообщил об этом сообщении об ошибке:
http: // start-coding .blogspot.com / 2015/07 / Android-разработка-в-окна-using.html
Вы рассмотрели сериализацию к JSON вместо XML?
Json.NET имеет действительно мощный и гибкий сериализатор, который не имеет никаких проблем со словарями Хеш-таблиц / универсальными словарями и не требует никаких конкретных атрибутов. Я знаю, потому что я записал его:)
Это дает Вам "кучу" управления через различные варианты на сериализаторе, и это позволяет Вам переопределять, как тип сериализируется путем создания JsonConverter для него.
, По-моему, JSON более человекочитаем, чем XML и Json.NET дают опцию записать приятно отформатированный JSON.
Наконец проект является открытым исходным кодом, таким образом, можно ступить в код и сделать модификации, если Вы должны.
Необходимо использовать NetDataContractSerializer. Это покрывает любой вид графа объектов и поддерживает дженерики, списки, полиморфизм (атрибут KnownType не нужен здесь), рекурсия и и т.д. Единственный недостаток состоит в том, что необходимо отметить все Вы классы с [сериализуемым] / [DataContract] атрибуты, но опыт показывает, что необходимо сделать своего рода руководство, подстраивающее так или иначе с тех пор не, все участники должны быть сохранены. Также это сериализирует в Xml, хотя его удобочитаемость сомнительна.
Мы имели те же требования как Ваш и выбрали это решение.
Для совместимости мы всегда использовали Сериализацию Xml и удостоверялись, что наш класс был разработан с нуля, чтобы сделать это правильно.
Мы создаем документ схемы XSD и генерируем ряд классов от того использования XSD.exe. Это генерирует частичные классы, таким образом, мы тогда создаем ряд соответствующих частичных классов для добавления дополнительных методов, мы хотим помочь нам заполнить классы и использовать их в нашем приложении (поскольку они фокусируются на сериализации и десериализации и являются небольшим difficut для использования иногда).
Возможно, более эффективный маршрут должен был бы сериализировать использование BinaryFormatter
, Как скопировано от http://blog.paranoidferret.com/index.php/2007/04/27/csharp-tutorial-serialize-objects-to-a-file/
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public class Serializer
{
public Serializer()
{
}
public void SerializeObject(string filename,
ObjectToSerialize objectToSerialize)
{
Stream stream = File.Open(filename, FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();
}
public ObjectToSerialize DeSerializeObject(string filename)
{
ObjectToSerialize objectToSerialize;
Stream stream = File.Open(filename, FileMode.Open);
BinaryFormatter bFormatter = new BinaryFormatter();
objectToSerialize =
(ObjectToSerialize)bFormatter.Deserialize(stream);
stream.Close();
return objectToSerialize;
}
}
Я соглашаюсь, что находящиеся в DataContract методы сериализации (к JSON, XML, и т.д.) немного более сложны, чем я хотел бы.
, При попытке получить выезд JSON http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
, Это - часть расширений Ajax MS. По общему признанию это отмечается как Устаревшее в.NET 3.5, но упоминания ScottGu в его комментарии блога здесь ( http://weblogs.asp.net/scottgu/archive/2007/10/01/tip-trick-building-a-tojson-extension-method-using-net-3-5.aspx#4301973 ), что он не уверен, почему и это должно поддерживаться некоторое время дольше.
Поместите все классы, которые Вы хотите сериализировать в отдельный блок, и затем использовать sgen инструмент для генерации блока сериализации для сериализации к XML. Используйте атрибуты XML для управления сериализацией.
, Если необходимо настроить блок сериализации (и Вы будете потребность, что для поддержки классов, которые не являются IXmlSerializable и классами, которые содержат абстрактные узлы) затем дайте sgen команду выводить исходный код в отдельный файл и затем добавлять его к решению. Тогда можно изменить его по мере необходимости.
http://msdn.microsoft.com/en-us/library/bk3w6240 (По сравнению с 80) .aspx
FWIW, мне удалось сериализировать всю Платформу AdsML (более чем 400 классов) использующий эту технику. Действительно требовалась большая ручная настройка, но существует не обходящий это, если Вы рассматриваете размер платформы. (Я использовал отдельный инструмент для движения от XSD до C#)
Самая простая вещь сделать отметить Ваши объекты с сериализуемым атрибутом и затем использовать бинарный форматтер для обработки сериализации. Весь график класса не должен быть проблемой при условии, что любые содержащие в нем объекты также отмечены как сериализуемые.
Сериализация SOAP работала хорошо на меня, даже на объекты, не отмеченные с [сериализуемым]
IntermediateSerializer в Платформе XNA является довольно чертовски классным. Можно найти набор учебных руководств при использовании его в http://blogs.msdn.com/shawnhar
От Ваших требований это кажется, что XML-сериализация является лучшей.
, Какие проблемы Вы имеете с наборами при сериализации? Если Вы отсылаете к не знанию, какие атрибуты использовать в Списке или чем-то подобном, Вы могли бы попробовать атрибут XmlArray на своем свойстве. Можно определенно сериализировать набор.
У Вас будут проблемы с сериализацией набора, если объекты в наборе будут содержать какую-либо ссылку на другие объекты в том же наборе. Если какой-либо тип двойного указания существует, Вы заканчиваете тем, что создали мультикарту, которая не может быть сериализирована. На каждой проблеме у меня когда-либо была сериализация пользовательского набора, всегда из-за некоторой добавленной функциональности мне было нужно, который хорошо работал как часть "типичного" клиент-серверного приложения, и затем потерпел полный провал как часть потребительского серверного приложения поставщика.
Если я вспоминаю, что это работает что-то вроде этого со свойством:
[XmlArray("Foo")]
[XmlArrayItem("Bar")]
public List<BarClass> FooBars
{ get; set; }
при сериализации этого Вы получили бы что-то как:
<Foo>
<Bar />
<Bar />
</Foo>
, Конечно, я должен, вероятно, подчиниться экспертам. Вот больше информации от MS: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx
Сообщенный мне, если это удается для Вас.
print text2int("nineteen ninety six") # 115
– Nick Ruiz 13 May 2014 в 14:26