Я имею ошибки и из-за нее не создается файл сохранения.
Код системы сохранения:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Save : MonoBehaviour
{
public S PlayerInfo;
public void SaveGame()
{
XmlSerializer serializer = new XmlSerializer (typeof(S));
FileStream stream = new FileStream (Application.dataPath + "/StreamingFiles/XML/Saves.xml", FileMode.Create);
serializer.Serialize (stream, PlayerInfo);
stream.Close ();
}
}
Код игрока:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class S : MonoBehaviour
{
public bool Damaged;
public float Health;
public float Armor;
}
Ошибка:
InvalidOperationException: To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. UnityEngine.Transform does not implement Add(System.Object).
System.Xml.Serialization.TypeData.get_ListItemType ()
System.Xml.Serialization.TypeData.get_ListItemTypeData ()
System.Xml.Serialization.TypeData..ctor (System.Type type, System.String elementName, Boolean isPrimitive, System.Xml.Serialization.TypeData mappedType, System.Xml.Schema.XmlSchemaPatternFacet facet)
System.Xml.Serialization.TypeData..ctor (System.Type type, System.String elementName, Boolean isPrimitive)
System.Xml.Serialization.TypeTranslator.GetTypeData (System.Type runtimeType, System.String xmlDataType)
System.Xml.Serialization.TypeTranslator.GetTypeData (System.Type type)
System.Xml.Serialization.XmlReflectionImporter.GetReflectionMembers (System.Type type)
System.Xml.Serialization.XmlReflectionImporter.ImportClassMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace)
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace)
Rethrow as InvalidOperationException: There was an error reflecting type 'S'.
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace)
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Type type, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace)
System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace)
System.Xml.Serialization.XmlSerializer..ctor (System.Type type)
Save.SaveGame () (at Assets/Save.cs:34)
UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:154)
UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:637)
UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:773)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:52)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()
|
|||
SFilchakov
10.06.16 — 22:32 |
Всем привет! Хочу кое что в хмл запихнуть.
Пишу в модуле объекта обработки
\\
Ошибка при вызове метода контекста (ОткрытьФайл)
////// Подскажите, что не так? |
||
Dmitry1c
1 — 10.06.16 — 22:33 |
наклонная черта в другую сторону.. |
||
Dmitry1c
2 — 10.06.16 — 22:35 |
или контекст на сервере |
||
SFilchakov
3 — 10.06.16 — 22:38 |
Что значит контекст на сервере? Это в модуле обработки на 8.3 Поменял наклон, тоже самое. |
||
Лефмихалыч
4 — 10.06.16 — 22:38 |
(0) это все происходит на сервере приложений, а там все не так, как у тебя на клиенте |
||
SFilchakov
5 — 10.06.16 — 22:40 |
Это надо делать на клиенте что ли? |
||
SFilchakov
6 — 10.06.16 — 22:42 |
Спасибо, теперь понял. А как же желать загрузку выгрузку по регламентному заданию через файл xml? если регламентное задание крутится на сервере, а файл можно создать только на клиенте и перейти с сервера на клиент нельзя? |
||
Лефмихалыч
7 — 10.06.16 — 23:05 |
(6) файл можно создать и на сервере. Просто надо создавать его на дисках и в папках, которые существуют на сервере |
||
Лефмихалыч
8 — 10.06.16 — 23:06 |
+(7) даже — не просто существуют, а еще и права на запись в них должны быть у пользователя, под которым запущена служба сервера приложений (ragent) |
||
SFilchakov
9 — 10.06.16 — 23:15 |
А где этого пользователя можно посмотреть? |
||
Стальная Крыса 10 — 11.06.16 — 04:18 |
На том компьютере, где работает сервер 1С |
Перейти к контенту
|
|||
SFilchakov
10.06.16 — 22:32 |
Всем привет! Хочу кое что в хмл запихнуть. Пишу в модуле объекта обработки Процедура СоздатьФайлДанныхВыгрузки(СтруктураВыгрузки) ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(«d:doc.xml»); КонецПроцедуры \ И сразу падает: Ошибка при вызове метода контекста (ОткрытьФайл) ЗаписьXML.ОткрытьФайл(«d:doc.xml»); по причине: Каталог не обнаружен ‘d:doc.xml’ ////// Хотя все примеры по создания файла xml так и начинаются: ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(«d:doc.xml»); /// Пробовал и так: ЗаписьXML=Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(«d:doc.xml»); То же самое. Подскажите, что не так? |
||
Dmitry1c
1 — 10.06.16 — 22:33 |
наклонная черта в другую сторону.. |
||
Dmitry1c
2 — 10.06.16 — 22:35 |
или контекст на сервере |
||
SFilchakov
3 — 10.06.16 — 22:38 |
Что значит контекст на сервере? Это в модуле обработки на 8.3 Поменял наклон, тоже самое. |
||
Лефмихалыч
4 — 10.06.16 — 22:38 |
(0) это все происходит на сервере приложений, а там все не так, как у тебя на клиенте |
||
SFilchakov
5 — 10.06.16 — 22:40 |
Это надо делать на клиенте что ли? |
||
SFilchakov
6 — 10.06.16 — 22:42 |
Спасибо, теперь понял. А как же желать загрузку выгрузку по регламентному заданию через файл xml? если регламентное задание крутится на сервере, а файл можно создать только на клиенте и перейти с сервера на клиент нельзя? |
||
Лефмихалыч
7 — 10.06.16 — 23:05 |
(6) файл можно создать и на сервере. Просто надо создавать его на дисках и в папках, которые существуют на сервере |
||
Лефмихалыч
8 — 10.06.16 — 23:06 |
+(7) даже — не просто существуют, а еще и права на запись в них должны быть у пользователя, под которым запущена служба сервера приложений (ragent) |
||
SFilchakov
9 — 10.06.16 — 23:15 |
А где этого пользователя можно посмотреть? |
||
Стальная Крыса 10 — 11.06.16 — 04:18 |
На том компьютере, где работает сервер 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
1 / 1 / 0
Регистрация: 28.11.2014
Сообщений: 33
1
25.04.2017, 01:02. Показов 1578. Ответов 1
Добрый день, пытаюсь на основе List’а своего класса Software создать XML-файл и получаю непонятную ошибку.
Код класса:
C# | ||
|
Код класса, который содержит List<Software>
C# | ||
|
Код по созданию XML-файла
C# | ||
|
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Здравствуйте, есть веб-сервис для доступа к БД, при попытке запустить метод LogPas()
выдает ошибку
System.InvalidOperationException: Ошибка при создании документа XML. —> System.InvalidOperationException: Невозможно сериализовать System.Data.Common.DataRecordInternal, т.*к. он не имеет беспараметрического конструктора.
[WebMethod]
public ArrayList LogPas()
{
ArrayList allData = new ArrayList();
SqlConnection con = new SqlConnection(connectionString);
SqlCommand com = new SqlCommand("SELECT * FROM Student", con);
con.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{ foreach (DbDataRecord result in dr)
allData.Add(result);
return allData;
}
else return null;
}
Deleted
3611 золотой знак5 серебряных знаков13 бронзовых знаков
задан 20 мая 2013 в 10:08
Вам компилятор и так всё сказал. Передать объект с типом DataRecordInternal не получится, так как для сериализации требуется конструктор без параметров, коего нет у данного типа.
Самое простое решение — использовать другой класс.
ответ дан 20 мая 2013 в 10:13
SpawnSpawn
2,50810 серебряных знаков19 бронзовых знаков
7
hi i have the following code to perform xml serialization:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
FormSaving abc = new FormSaving();
if (MajorversionresultLabel != null && MajorversionresultLabel.Content != null && MajorversionLabel.Content.ToString() != string.Empty)
abc.Majorversion = MajorversionresultLabel.Content.ToString();
//abc.Minorversion = MinorversionresultLabel.Content.ToString();
//abc.Projectnumber = ProjectnumberresultLabel.Content.ToString();
//abc.Buildnumber = BuildnumberresultLabel.Content.ToString();
//abc.Previousbuildversion = PreviousbuildversionresultLabel.Content.ToString();
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem;
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, abc);
}
}
the error «There was an error generating the XML document» occurs at serializer.Serialize(savestream, abc);
my form saving class:
public class FormSaving
{
public string Majorversion
{
get;
set;
}
public string Minorversion
{
get;
set;
}
public string Projectnumber
{
get;
set;
}
public string Buildnumber
{
get;
set;
}
public string Previousbuildversion
{
get;
set;
}
public object Startzbuildfrom
{
get;
set;
}
}
can anyone help me fix this?
EDIT:
i tried this but it doesnt work as well:
under «save button»
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem.ToString();
under «load button»
StartzbuildfromcomboBox.SelectedItem = abc.Startzbuildfrom;
here is how i populate my combobox items:
<ComboBox Height="23" Margin="577,72,497,0" Name="StartzbuildfromcomboBox" VerticalAlignment="Top"><ComboBoxItem>library</ComboBoxItem></ComboBox>
hi i have the following code to perform xml serialization:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
FormSaving abc = new FormSaving();
if (MajorversionresultLabel != null && MajorversionresultLabel.Content != null && MajorversionLabel.Content.ToString() != string.Empty)
abc.Majorversion = MajorversionresultLabel.Content.ToString();
//abc.Minorversion = MinorversionresultLabel.Content.ToString();
//abc.Projectnumber = ProjectnumberresultLabel.Content.ToString();
//abc.Buildnumber = BuildnumberresultLabel.Content.ToString();
//abc.Previousbuildversion = PreviousbuildversionresultLabel.Content.ToString();
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem;
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, abc);
}
}
the error «There was an error generating the XML document» occurs at serializer.Serialize(savestream, abc);
my form saving class:
public class FormSaving
{
public string Majorversion
{
get;
set;
}
public string Minorversion
{
get;
set;
}
public string Projectnumber
{
get;
set;
}
public string Buildnumber
{
get;
set;
}
public string Previousbuildversion
{
get;
set;
}
public object Startzbuildfrom
{
get;
set;
}
}
can anyone help me fix this?
EDIT:
i tried this but it doesnt work as well:
under «save button»
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem.ToString();
under «load button»
StartzbuildfromcomboBox.SelectedItem = abc.Startzbuildfrom;
here is how i populate my combobox items:
<ComboBox Height="23" Margin="577,72,497,0" Name="StartzbuildfromcomboBox" VerticalAlignment="Top"><ComboBoxItem>library</ComboBoxItem></ComboBox>
привет, у меня есть следующий код для сериализации xml:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
FormSaving abc = new FormSaving();
if (MajorversionresultLabel != null && MajorversionresultLabel.Content != null && MajorversionLabel.Content.ToString() != string.Empty)
abc.Majorversion = MajorversionresultLabel.Content.ToString();
//abc.Minorversion = MinorversionresultLabel.Content.ToString();
//abc.Projectnumber = ProjectnumberresultLabel.Content.ToString();
//abc.Buildnumber = BuildnumberresultLabel.Content.ToString();
//abc.Previousbuildversion = PreviousbuildversionresultLabel.Content.ToString();
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem;
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, abc);
}
}
ошибка «Произошла ошибка при создании XML-документа» возникает в serializer.Serialize(savestream, abc);
мой класс сохранения формы:
public class FormSaving
{
public string Majorversion
{
get;
set;
}
public string Minorversion
{
get;
set;
}
public string Projectnumber
{
get;
set;
}
public string Buildnumber
{
get;
set;
}
public string Previousbuildversion
{
get;
set;
}
public object Startzbuildfrom
{
get;
set;
}
}
кто-нибудь может помочь мне это исправить?
EDIT:
Я пробовал это, но это тоже не работает:
под «кнопкой сохранения»
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem.ToString();
под «кнопкой загрузки»
StartzbuildfromcomboBox.SelectedItem = abc.Startzbuildfrom;
вот как я заполняю элементы поля со списком:
<ComboBox Height="23" Margin="577,72,497,0" Name="StartzbuildfromcomboBox" VerticalAlignment="Top"><ComboBoxItem>library</ComboBoxItem></ComboBox>
I am trying to create a simple XML file, but I am getting the exception
Object reference not set to an instance of an object
at this part:
doc.Root.Add(persons);
What am I doing wrong?
XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", null));
XElement persons = new XElement("Persons");
XElement[] el ={new XElement("PersonInfo",new XAttribute("ID",1),
new XElement("Name","ali"),
new XElement("Phone","222222"))
};
persons.Add(el);
doc.Add(persons);
doc.Save("PhoneBook.xml", SaveOptions.None);
Response.Write("ok");
}
1 / 1 / 0
Регистрация: 28.11.2014
Сообщений: 33
1
25.04.2017, 01:02. Показов 1661. Ответов 1
Добрый день, пытаюсь на основе List’а своего класса Software создать XML-файл и получаю непонятную ошибку.
Код класса:
C# | ||
|
Код класса, который содержит List<Software>
C# | ||
|
Код по созданию XML-файла
C# | ||
|
0