繁体   English   中英

XML反序列化为null

[英]XML deserialize getting null

我有一个xml,我需要序列化。

<Configuration>   
    <Configs>
        <tester>
            <test>gabc</test>
            <test>def</test>
        </tester>
    </Configs>
</Configuration>

这是使用的类。

public class Configuration
{
   public tester Configs{ get; set; }
}

public class tester 
{
   // The web site name
   public string[] test{ get; set; }
}

Configuration obj = new Configuration();
XmlSerializer mySerializer = new XmlSerializer(typeof(Configuration));
FileStream myFileStream = new FileStream(SettingsFile, FileMode.Open);
obj = (Configuration)mySerializer.Deserialize(myFileStream);
myFileStream.Close();

我将obj.configs.test作为null。

如何获取测试节点中使用的值?

您需要指定XmlArrayXmlArrayItem

public class tester
{
   //The web site name
   [XmlArray("tester")]
   [XmlArrayItem("test")]
   public string[] test { get; set; }
}

xml配置文件应使用<string>标记

所以像这样:

<tester>
<string>gabc</string>
<string>def</string>
</tester>

您当前的类序列化如下:

<?xml version="1.0" encoding="utf-16"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Configs>
    <test>
      <string>gabc</string>
      <string>def</string>
    </test>
  </Configs>
</Configuration>

我使用代码创建了这个:

 Configuration obj = new Configuration
                        {
                            Configs = new tester
                                          {
                                              test = new string[]
                                                         {
                                                             "gabc", "def"
                                                         }
                                          }
                        };

XmlSerializer serializer = new XmlSerializer(typeof(Configuration));

string output;

using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, obj);
    output = writer.ToString();
}

使用该代码修改类,以便按照您希望反序列化的方式序列化。 序列化是双向的。

您可以实现IXmlSerializable接口或使用xml范围的属性。

暂无
暂无

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

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