XML字符串无法正确反序列化为C#对象问题求助
问题原因
你的XML中,根元素<ns2:dataElement>属于命名空间http://sameplens.com,但内部的<inner>、<outerfield1>等子元素没有使用命名空间前缀,属于无命名空间范畴。而你的C#类中,XmlElement特性未显式指定Namespace属性,默认会继承根元素的命名空间,导致XmlSerializer无法匹配XML中的元素,最终所有字段值为空。
解决方法
给所有XmlElement特性添加Namespace = "",明确指定这些元素属于无命名空间,与XML中的元素匹配:
修改后的SampleClass:
[XmlRoot(Namespace = "http://sameplens.com", ElementName = "dataElement")] public class SampleClass { [XmlElement(ElementName = "inner", Namespace = "")] public List<SampleInnerClass> Inner { get; set; } [XmlElement(ElementName = "outerfield1", Namespace = "")] public string OuterField1 { get; set; } [XmlElement(ElementName = "outerfield2", Namespace = "")] public string OuterField2 { get; set; } }
修改后的SampleInnerClass:
public class SampleInnerClass { [XmlElement(ElementName = "innerfield1", Namespace = "")] public string InnerField1 { get; set; } [XmlElement(ElementName = "innerfield2", Namespace = "")] public string InnerField2 { get; set; } }
修改后再调用ExtractDataFromResponse方法反序列化,就能正确获取XML中的数据。
内容的提问来源于stack exchange,提问作者Tamás Kovács
相关产品推荐
相关产品推荐

