有个类,其中定义了一个集合,比如:
StringCollection Strings;
当序列化成XML的时候,经过多方测试,都只能达到这样的一个效果:
<StringsRootElement>
<StringsElement>StringsValue1</StringsElement>
<StringsElement>StringsValue2</StringsElement>
...
<StringsElement>StringsValueN</StringsElement>
</StringsRootElement>
而我的目标是希望序列化为
<StringsElement>StringsValue1</StringsElement>
<StringsElement>StringsValue2</StringsElement>
...
<StringsElement>StringsValueN</StringsElement>
现在我的临时解决方案是在序列化好了后,获得目标的XML文本,通过替换的方式把<StringsRootElement>和</StringsRootElement>替换了。
大家在这方面有什么好的解决方案?
StringCollection sc = new StringCollection()
{
"str", "str", "str", "str", "str", "str"
};
XmlSerializer xs = new XmlSerializer(typeof(StringCollection));
using ( var ms = new MemoryStream() )
{
xs.Serialize(ms, sc);
ms.Position = 0;
//var x = XmlReader.Create(ms).ReadSubtree().ReadInnerXml();
var xd = new XmlDocument();
xd.LoadXml(new StreamReader(ms).ReadToEnd());
var x = xd.DocumentElement.InnerXml;
}
序列化貌似一定要生成根元素……生成后改一下
ps. 不知道为啥注释的那句XmlReader返回空,要不就只能用下面三行了。
XML是必定有根元素的,如果你去掉Root就不是XML了……