我有一个类需要在C#
中使用XMLserializer进行序列化[DataContract]
Public class X
{
[Datamember]
Public List<string> CodeList {get;set;}
}
但是由于CodeList的数据类型是字符串,我得到的是xml
<CodeList>
<string>asd</string>
<string>cvb</string>
</CodeList>
但是我想以字符串显示为代码的格式显示xml,即我想给字符串一个别名的代码。
<CodeList>
<Code>asd</Code>
<Code>cvb</Code>
</CodeList>
答案 0 :(得分:0)
您提到使用XMLSerializer
,但您正在使用DataContractSerializer
的属性。如果你坚持使用XMLSerializer
,那就简单了。
class Program
{
static void Main(string[] args)
{
X x = new X();
x.CodeList = new List<string>() {"test", "test1"};
var xml = new XmlSerializer(typeof (X));
TextWriter writer = new StreamWriter("test.xml");
xml.Serialize(writer,x);
writer.Close();
}
}
public class X
{
[XmlArrayItem("Code")]
public List<string> CodeList { get; set; }
}
您注意到我不需要[XmlArrayItem]
以外的任何属性。这是因为XmlSerializer
将继续并序列化所有公共属性。如果这是一个问题,您可以使用[System.Xml.Serialization.XmlIgnoreAttribute]
,它将在序列化时忽略属性。
这是我从上面的代码中得到的输出:
<?xml version="1.0" encoding="utf-8"?>
<X xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CodeList>
<Code>test</Code>
<Code>test1</Code>
</CodeList>
</X>