c# - How to serialize a list of string values with attributes -


i have problem. how serialize list of string entries have attributes well?

<xml>     <metadata>         <entry key="key1">string1</entry>         <entry key="key2">string2</entry>         <entry key="key3">string3</entry>     </metadata> </xml> 

i know how without attributes, don't have idea how same in case:

[serializable] [xmlroot(elementname = "xml")] public class myxml {     [xmlarray(elementname = "metadata")]     [xmlarrayitem(elementname = "entry")]     public list<string> metadata { get; set; } } 

you need create separate class hold xmlattribute , xmltext.

public class entry {     [xmlattribute("key")]     public string key { get; set; }     [xmltext]     public string value { get; set; } }  [serializable] [xmlroot(elementname = "xml")] public class myxml {     [xmlarray(elementname = "metadata")]     [xmlarrayitem(elementname = "entry")]     public list<entry> metadata { get; set; } } 

then can serialize choice of serializer.

var item = new myxml {     metadata = new list<entry>     {         new entry { key = "key1", value = "entry1" },         new entry { key = "key2", value = "entry2" },         new entry { key = "key3", value = "entry3" }     } };  var serializer = new xmlserializer(typeof(myxml));  string xml;  using(var stream = new stringwriter()) using(var writer = xmlwriter.create(stream,                                     new xmlwritersettings { indent = true })) {     serializer.serialize(writer, item);     xml = stream.tostring(); }  console.writeline(xml); 

result:

<?xml version="1.0" encoding="utf-16"?> <xml xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema">   <metadata>     <entry key="key1">entry1</entry>     <entry key="key2">entry2</entry>     <entry key="key3">entry3</entry>   </metadata> </xml> 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -