我有一个类,我需要将它序列化为XML。下面是示例:
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格式序列化它时,结果是:
<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>
但是,我需要如下结果:
<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‘,这并不能解决问题。
发布于 2018-08-01 09:18:29
尝试以下操作:
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));
}
}
}
}
https://stackoverflow.com/questions/51621320
复制相似问题