自從我使用了DataContractSerializer
以來,我已經有一段時間了,我在反序列化xml文件時遇到了一些麻煩。使用DataContractSerializer解析xml文件時出現的問題
<?xml version="1.0" encoding="utf-8"?> <SoftwareLicense xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
我得到的錯誤是:
{"Error in line 1 position 117. Expecting element 'SoftwareLicense' from namespace 'http://schemas.datacontract.org/2004/07/Solentim.Modules.Licensing.Activation'.. Encountered 'Element' with name 'SoftwareLicense', namespace ''. "}
[DataContract(Name = "SoftwareLicense")]
public class SoftwareLicense : ISoftwareLicense
{
...
}
我已經試過指定其中也不起作用的命名空間。
var serializer = new DataContractSerializer(typeof(SoftwareLicense));
using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
using (var reader =
XmlDictionaryReader.CreateTextReader(stream, new XmlDictionaryReaderQuotas()))
{
return (SoftwareLicense) serializer.ReadObject(reader);
}
}
該文件的名稱空間最近已更改,並且該接口已添加到類中。我解決了所有其他問題,我似乎無法繞過這一問題。
我更喜歡使用DataContractSerializer的作爲類現在有接口的屬性和XMLSerializer的不會deserialise它
由於錯誤信息是有關XML,請提供XML。 –
爲什麼不使用'XmlSerializer',因爲它使事情變得更容易? –
啊包含XML,但是從帖子中刪除,錯過了'code'標記 –