繁体   English   中英

XML Serialize C#

[英]XML Serialize C#

我正在使用

List<EFacebook> facebooks = BFacebook.ReadFacebookFriends(user.EProviders
    .Where(i => i.ProviderType == EProvider.EnumProviderType.Facebook)
    .First().Token);

StringBuilder xml = new StringBuilder();
foreach (EFacebook i in facebooks)
{
   xml.AppendFormat("<id>{0}</id>", i.id);
}

有人可以建议更好的代码将每个i.id序列化为XML字符串吗?

编辑:facebook对象有近20个属性。 如果使用XmlSerializer所有20个属性都将序列化为XML。 我只需要id列。

您可能想看看.NET Framework中已经内置的XML序列化

您可以使用类似于以下内容的代码来序列化对象:

MySerializableClass myObject = new MySerializableClass();
// Insert code to set properties and fields of the object.
XmlSerializer mySerializer = new 
XmlSerializer(typeof(MySerializableClass));
// To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter("myFileName.xml");
mySerializer.Serialize(myWriter, myObject);
myWriter.Close();

请参阅: 如何序列化

您可以使用XmlIgnore属性标记要忽略的属性,如下所示:

public class Group
{
   // The XmlSerializer ignores this field.
   [XmlIgnore]
   public string Comment;

   // The XmlSerializer serializes this field.
   public string GroupName;
}

参见XMLIgnore

XmlSerializer xs = new XmlSerializer(typeof(int[]));
xs.Serialize(stream,facebooks.Select(x=>x.id).ToArray())

我会使用Linq To Xml来创建Xml树结构

参见示例: Linq To Xml

如果您只是将id值保存到xml字符串中,那么我不会说您正在“序列化”对象。

每当使用XML时,使用XML库要比处理文本好得多。 一个明显的原因是它可以确保您的XML格式正确。

我会做这样的事情:

List<EFacebook> facebooks = GetFriends();
var facebookIds = facebooks.Select(f => new XElement("id", f.id));
var facebookXml = new XElement("facebookIds", facebookIds);

哪个会给你像XML

<facebookIds>
  <id>1</id>
  <id>2</id>
</facebookIds>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM