1

我有一个定义如下的类:

[XmlRoot(ElementName="state_territories")]
public class Location
{
    ...
}

我正在检索的 XML(从流中提取并使用写入器写入调试器)是:

<?xml version='1.0' encoding='utf-8' ?><state_territories>...</state_territories>

但是,当我尝试序列化我的 XML 响应时,例如:

var serializer = new DataContractSerializer(typeof(Location));
Locations = serializer.ReadObject(response.GetResponseStream()) as Location;

我收到以下异常:

“来自命名空间‘ http://schemas.datacontract.org/2004/07/App.Data.Territories ’的预期元素‘位置’。遇到名为‘state_territories’、命名空间‘’的‘元素’。”

我可能遗漏了一些简单的东西,但我认为如果我定义 XmlRoot,这将覆盖推断的根元素位置。

有任何想法吗?

4

1 回答 1

1

[XmlRoot(...)]仅由以下人员处理XmlSerializer

var serializer = new XmlSerializer(typeof(Location));
Locations = (Location) serializer.Deserialize(response.GetResponseStream());

如果您正在处理常规 xml 并且需要控制名称/属性等,那么XmlSerializer是最佳选择;DataContractSerializer仅提供对 xml 映射的最小控制。

于 2013-04-15T15:02:38.493 回答