【发布时间】:2014-11-28 10:26:52
【问题描述】:
我有一个需要反序列化为带有XmlSerializer 的对象的 xml 文档:
完成这项工作的方法采用默认命名空间和 xml 字符串:
public static T Deserialize(string xml, string defaultNamespace)
{
var serializer = new XmlSerializer(typeof(T), defaultNamespace);
object obj;
using (var stringReader = new StringReader(xml))
{
obj = serializer.Deserialize(stringReader);
stringReader.Close();
}
return (T)obj;
}
当默认命名空间“http://www.defaultnamespace.com/xsd/MyObject12”与以下 xml 字符串一起传递时:(其中新行是“\n\r”)
<xml version="1.0" encoding="utf-8"?>
<ns:MyObject12 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns1="http://example.com/xsd/example11"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="http://www.example.com/xsd/MyObject12">
<Status xmlns="some:stuff">
<StatusCode>0</StatusCode>
</Status>
</ns:MyObject12>
抛出以下异常:
System.Xml.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
附加信息:XML 文档中存在错误 (2, 2)。
内部异常:{http://www.example.com/xsd/MyObject12'> 不是预期的。"}
我尝试通过在所有 xml 元素前添加 ns: 来修复它,但发生了同样的错误。
有谁知道如何解决这个问题?
【问题讨论】:
-
我只是在猜测(抱歉):命名空间不是只能在声明它的元素的子/后代元素中使用吗?所以它应该由
?