|
XML Serialization C#
|
|||
---|---|---|---|
#18+
Здравствуйте, подкажите пожалуйста как переопределить название элементов класса и заглавного элемента при XML сериалийзации? Имею класс: [XmlRoot("NODE")] public class Node { [XmlElement( "NAME")] public string Name; [XmlElement("ID")] public int ID; [XmlElement("PARENTID")] public int ParentID; [XmlElement("DATA")] public string Data; [XmlElement("TYPE")] public string Type; public Node() { Name = "Unknown"; ID = 0; Type = "NODE"; } public Node(string Name0, int ID0, int ParentID0, string Data0, string Type0) { Name = Name0; ID = ID0; ParentID = ParentID0; Data = Data0; Type = Type0; } } Написала метод для сериалийзации: // Create file to save the data to FileStream fs = new FileStream(fname_DeleteNode, FileMode.Create); // Create an XmlSerializer object to perform the serialization XmlSerializer xs = new XmlSerializer(typeof (List<Node>)); List<Node> DOC = new List<Node>(); for (int i = 0; i < XMLorder.Count; i++) { var ID = XMLorder[i]; Node nt = (Node) nodes[ID]; DOC.Add(nt); } // Use the XmlSerializer object to serialize the data to the file xs.Serialize(fs, DOC); Получаю такой XML файл: <?xml version="1.0"?> <ArrayOfNode xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <Node> <NAME>название1</NAME> <ID>1000</ID> <PARENTID>0</PARENTID> <DATA>node.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название2</NAME> <ID>1001</ID> <PARENTID>1000</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название3</NAME> <ID>1081</ID> <PARENTID>1001</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название4</NAME> <ID>1003</ID> <PARENTID>1081</PARENTID> <DATA>Введение.htm</DATA> <TYPE>TEXT</TYPE> </Node> </ArrayOfNode> А хочу получить: Получаю такой XML файл: <?xml version="1.0"?> <DOC xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <NODE> <NAME>название1</NAME> <ID>1000</ID> <PARENTID>0</PARENTID> <DATA>node.htm</DATA> <TYPE>NODE</TYPE> </Node> <NODE> <NAME>название2</NAME> <ID>1001</ID> <PARENTID>1000</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <NODE> <NAME>название3</NAME> <ID>1081</ID> <PARENTID>1001</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <NODE> <NAME>название4</NAME> <ID>1003</ID> <PARENTID>1081</PARENTID> <DATA>Введение.htm</DATA> <TYPE>TEXT</TYPE> </NODE> </DOC> то есть вместо ArrayOfNode было DOC , а вместо Node стало NODE ... Подскажите пожалуста как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 15:23 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
FAQ по оформлению кода в сообщениях ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 15:38 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
надо включить JavaScript в браузере, видимо можно вписать и руками Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 16:33 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
buserразве не это? http://msdn.microsoft.com/ru-ru/library/f1wczcys(v=vs.110).aspx Спасибо большое -уже помогло... остался один вопрос с "Node"... я переделала метод сериализации: // Create file to save the data to FileStream fs = new FileStream(fname_DeleteNode, FileMode.Create); // Create an XmlSerializer object to perform the serialization XmlRootAttribute xRoot = new XmlRootAttribute(); xRoot.ElementName = "DOC"; //xRoot.Namespace = " http://www.cpandl.com"; xRoot.IsNullable = true; // Construct the XmlSerializer with the XmlRootAttribute. XmlSerializer xs = new XmlSerializer(typeof (List<Node>),xRoot); List<Node> DOC = new List<Node>(); for (int i = 0; i < XMLorder.Count; i++) { var ID = XMLorder[i]; Node nt = (Node) nodes[ID]; DOC.Add(nt); } // Use the XmlSerializer object to serialize the data to the file xs.Serialize(fs, DOC); получаю такой XML файл на выходе: <?xml version="1.0"?> <DOC xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <Node> <NAME>название1</NAME> <ID>1000</ID> <PARENTID>0</PARENTID> <DATA>node.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название2</NAME> <ID>1001</ID> <PARENTID>1000</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название3</NAME> <ID>1081</ID> <PARENTID>1001</PARENTID> <DATA>note.htm</DATA> <TYPE>NODE</TYPE> </Node> <Node> <NAME>название4</NAME> <ID>1003</ID> <PARENTID>1081</PARENTID> <DATA>Введение.htm</DATA> <TYPE>TEXT</TYPE> </Node> </DOC> Как добиться такого переименования для элемента Node в NODE? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 16:35 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
Не понятно накуя... но http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx Читайте msdn ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2014, 16:41 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
buserНе понятно накуя... но http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx Читайте msdn Потому что программа изначально писалась не мной, а сейчас надо функционал программы доработать. Обработчик риестрочувсвительный. Вот поэтому где-то в чужой программе происходит ошибка. Но все равно спасибо. :-* Сначало я конечно в интеренете искала, нужно мне решения проблемы не нашла. Помог атрибут [XmlType("NewTypeName")], а то в тех примерах, которые я раньше нашла, он не применялся ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 08:26 |
|
XML Serialization C#
|
|||
---|---|---|---|
#18+
а фотки на сайте где? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2014, 14:09 |
|
|
start [/forum/topic.php?fid=20&tid=1402670]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 467ms |
0 / 0 |