我有一个现有的XML文件,是由另一个应用程序提供的,看起来类似于这样:
<Root xmlns="http://someNameSpace">
<DisplayName>RootName</DisplayName>
<Groups>
<Group>
<Elements>
<a:anyType i:type="SomeType">
<DisplayName>ElementName</DisplayName>
</a>
</Elements>
</Group>
</Groups>
</Root>
我正试图编写一个可以使用 XmlSerializer
进行反序列化的类,目前它看起来像这样:
public class Root
{
public string DisplayName { get; set; }
public List<Group> Groups { get; set; }
}
public class Group : SomeType
{
public List<SomeType> Elements { get; set; }
}
public class SomeType
{
public string DisplayName { get; set; }
}
以下是使用XmlSerializer
进行简单反序列化的代码示例:
var serializer = new XmlSerializer(typeof (Root));
using (var streamReader = new StreamReader(somePathToXmlFile))
{
root = (Root) serializer.Deserialize(streamReader);
}
一切都可以成功反序列化,只有
Elements
列表为空。我已经尝试在Group
中用以下方式装饰Elements
属性的XmlAttributes
:
[XmlArrayItem(ElementName = "a")]
[XmlArrayItem(ElementName = "a:anyType")]
[XmlArrayItem(ElementName = "a", Type = typeof(SomeType))]
[XmlArrayItem(ElementName = "a:anyType", Type = typeof(SomeType))]
有谁知道将
<a:anyType i:type="SomeType">
项反序列化到Elements
列表的正确方法吗?编辑: 我后来意识到我遗漏了一个问题,就是
<Root>
实际上有一个命名空间:<Root xmlns="http://someNameSpace">
。请参见上面的XML。