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
Post a Comment