首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何序列化c#中List<T>属性而不显示其类型

如何序列化c#中List<T>属性而不显示其类型
EN

Stack Overflow用户
提问于 2018-08-01 04:11:03
回答 1查看 460关注 0票数 1

我有一个类,我需要将它序列化为XML。下面是示例:

代码语言:javascript
复制
public class StringArray
{        
    public List<string> Days { get; set; }

    public StringArray()
    {
        List<string> s = new List<string>();
        s.Add("Monday");
        s.Add("Tuesday");
        s.Add("Wed");           
        Days = s;
    }
}

当我以XML格式序列化它时,结果是:

代码语言:javascript
复制
 <StringArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Days>
     <string>Monday</string>
     <string>Tuesday</string>
     <string>Wed</string>
   </Days>
 </StringArray>

但是,我需要如下结果:

代码语言:javascript
复制
 <StringArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Days>             
         <Monday />
         <Tuesday />
         <Wed />                 
  </Days>
</StringArray>

实际上,我不想显示列表项的类型。

请注意,可能的字符串集是固定的。为此,我也尝试使用enum,但是XML显示的是enum类型名称,而不是'string‘,这并不能解决问题。

EN

回答 1

Stack Overflow用户

发布于 2018-08-01 09:18:29

尝试以下操作:

代码语言:javascript
复制
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string xml = File.ReadAllText(FILENAME);

            XDocument doc = XDocument.Parse(xml);

            List<XElement> strings = doc.Descendants("string").ToList();

            foreach (XElement xelement in strings)
            {
                xelement.ReplaceWith(new XElement((string)xelement));
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51621320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档