c# – 在使用XmlSerializer反序列化XML时保留仅空白元素内容

c# – 在使用XmlSerializer反序列化XML时保留仅空白元素内容,第1张

概述我有一个InputConfig类,它包含一个List< IncludeExcludeRule>: public class InputConfig{ // The rest of the class omitted private List<IncludeExcludeRule> includeExcludeRules; public List<IncludeExclu 我有一个inputConfig类,它包含一个List< IncludeExcludeRule>:
public class inputConfig{    // The rest of the class omitted     private List<IncludeExcludeRule> includeExcludeRules;    public List<IncludeExcludeRule> IncludeExcludeRules    {        get { return includeExcludeRules; }        set { includeExcludeRules = value; }    }}public class IncludeExcludeRule{    // Other members omitted    private int IDx;    private string function;    public int IDx    {        get { return IDx; }        set { IDx = value; }    }    public string Function    {        get { return function; }        set { function = value; }    }}

使用……

fileStream fs = new fileStream(path,fileMode.Create);XmlSerializer xmlSerializer = new XmlSerializer(typeof(inputConfig));xmlSerializer.Serialize(fs,this);fs.Close();

……而且……

StreamReader sr = new StreamReader(path);XmlSerializer reader = new XmlSerializer(typeof(inputConfig));inputConfig inputConfig = (inputConfig)reader.Deserialize(sr);

它就像一个冠军!简单的东西,除了我需要在反序列化时保留成员函数中的空格.生成的XML文件表明序列化时保留了空格,但在反序列化时丢失了.

<IncludeExcludeRules>  <IncludeExcludeRule>    <IDx>17</IDx>    <name>LIEN</name>    <Operation>E =</Operation>    <Function>  </Function>  </IncludeExcludeRule></IncludeExcludeRules>

MSDN documentation for XmlAttributeAttribute似乎在标题备注下解决了这个问题,但我不明白如何使用它.它提供了这个例子:

// Set this to 'default' or 'preserve'.[XmlAttribute("space",namespace = "http://www.w3.org/XML/1998/namespace")]public string Space

咦?设置“默认”或“保留”的内容?我确定我很接近,但这只是没有意义.我必须认为只有一行XmlAttribute在成员之前插入类中以在反序列化时保留空格.

在这里和其他地方有许多类似问题的实例,但它们似乎都涉及使用XmlReader和Xmldocument,或者涉及单个节点等.我想避免这种深度.

解决方法 要在XML反序列化期间保留所有空格,只需创建并使用XmlReader:
StreamReader sr = new StreamReader(path);XmlReader xr = XmlReader.Create(sr);XmlSerializer reader = new XmlSerializer(typeof(inputConfig));inputConfig inputConfig = (inputConfig)reader.Deserialize(xr);

与XmlSerializer.Deserialize(XmlReader)不同,XmlSerializer.Deserialize(TextReader)仅保留由xml:space =“preserve”属性标记的重要空格.

总结

以上是内存溢出为你收集整理的c# – 在使用XmlSerializer反序列化XML时保留仅空白元素内容全部内容,希望文章能够帮你解决c# – 在使用XmlSerializer反序列化XML时保留仅空白元素内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存