.net C#如何将字符串数组序列化/反序列化为一系列命名元素
我提到这个问题:.net C#如何将字符串数组序列化/反序列化为一系列命名元素,.net,c#-4.0,xml-serialization,xmlserializer,.net,C# 4.0,Xml Serialization,Xmlserializer,我提到这个问题: test@somewhere.com TFSBuildServiceHost.2013 基础知识 DEF XYZ 这就是我想要的XML的样子。如何更改下面的代码以这种方式构建它 <Subscription> <TextContains>ABC</TextContains> <TextContains>DEF</TextContains>
test@somewhere.com
TFSBuildServiceHost.2013
基础知识
DEF
XYZ
这就是我想要的XML的样子。如何更改下面的代码以这种方式构建它
<Subscription>
<TextContains>ABC</TextContains>
<TextContains>DEF</TextContains>
<TextContains>XYZ</TextContains>
</Subscription>
基础知识
DEF
XYZ
这是我要序列化的类定义:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace EventLog_Reporter
{
public class Subscription
{
public string Source;
public List<string> TextContains;
public List<string> UCTextContains;
public List<string> TextExcludes;
public List<string> UCTextExcludes;
}
public class Subscriber
{
public string Group;
public string Email;
public List<Subscription> SubscriptionList;
}
public class Subscribers
{
public List<Subscriber> SubscriberList;
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Serialization;
命名空间事件日志报告器
{
公开课订阅
{
公共字符串源;
公共列表文本包含;
公共列表包含:;
公开名单;
公开名单;
}
公共类订户
{
公共字符串组;
公共字符串电子邮件;
公共列表订阅列表;
}
公共类订户
{
公开名单订户;
}
}
这是我将序列化对象写入XML文件的代码:
public static void testSerialization()
{
Subscribers subscribers = new Subscribers();
Subscription subscription1 = new Subscription();
Subscription subscription2 = new Subscription();
Subscriber subscriber1 = new Subscriber();
subscription2.TextContains = new List<string>();
subscription2.TextContains.Add("ABC");
subscription2.TextContains.Add("DEF");
subscription2.TextContains.Add("XYZ");
subscription1.Source = "TFSBuildServiceHost.2013";
subscriber1.Email = "test@somewhere.com";
subscriber1.SubscriptionList = new List<Subscription>();
subscriber1.SubscriptionList.Add(subscription1);
subscriber1.SubscriptionList.Add(subscription2);
subscribers.SubscriberList = new List<Subscriber>();
subscribers.SubscriberList.Add(subscriber1);
string strOutFilenameXMLSerializer = "xmlSerializerObjectTest1.xml";
StreamWriter sw = new StreamWriter(strOutFilenameXMLSerializer);
XmlSerializer xmlSerializer = new XmlSerializer(subscribers.GetType());
xmlSerializer.Serialize(sw, subscribers);
sw.Close();
}
publicstaticvoidtestserialization()
{
订阅者订阅者=新订阅者();
订阅订阅1=新订阅();
订阅订阅2=新订阅();
订户subscriber1=新订户();
subscription2.TextContains=新列表();
subscription2.TextContains.Add(“ABC”);
subscription2.TextContains.Add(“DEF”);
subscription2.TextContains.Add(“XYZ”);
subscription1.Source=“TFSBuildServiceHost.2013”;
subscriber1.Email=”test@somewhere.com";
subscriber1.SubscriptionList=新列表();
subscriber1.SubscriptionList.Add(subscription1);
subscriber1.SubscriptionList.Add(subscription2);
subscribers.SubscriberList=新列表();
SubscriberList.Add(subscriber1);
字符串strOutFilenameXMLSerializer=“xmlSerializerObjectTest1.xml”;
StreamWriter sw=新的StreamWriter(strOutFilenameXMLSerializer);
XmlSerializer XmlSerializer=新的XmlSerializer(subscribers.GetType());
serializer.Serialize(软件、订阅者);
sw.Close();
}
谢谢。您可以使用该属性指定您的列表
应在不使用外部包装器元素的情况下序列化:
public class Subscription
{
public string Source;
[XmlElement]
public List<string> TextContains;
[XmlElement]
public List<string> UCTextContains;
[XmlElement]
public List<string> TextExcludes;
[XmlElement]
public List<string> UCTextExcludes;
}
谢谢,我想我试过了,但也许我一下子做了太多的改变。
public class Subscription
{
public string Source;
[XmlElement]
public List<string> TextContains;
[XmlElement]
public List<string> UCTextContains;
[XmlElement]
public List<string> TextExcludes;
[XmlElement]
public List<string> UCTextExcludes;
}
[XmlElement("Contains")]
public List<string> TextContains;