【问题标题】:Another {"<XXX xmlns=''> was not expected."} Deserializing Error另一个 {"<XXX xmlns=''> 不是预期的。"} 反序列化错误
【发布时间】:2015-04-07 16:37:52
【问题描述】:

所以我知道有很多与此相关的问题,并且我已经仔细阅读了这些问题,但仍然无法解决我的这个问题的实例。

内部异常:

{"<CostSchedule xmlns='urn:un:unece:uncefact:data:standard:CostSchedule:3'> was not expected."}

我的 XML 文档是这样开始的:

<urn:CostSchedule 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:urn="urn:un:unece:uncefact:data:standard:CostSchedule:3" 
xmlns:urn1="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:8" 
xsi:schemaLocation="urn:un:unece:uncefact:data:standard:CostSchedule:3 http://www.unece.org/fileadmin/DAM/uncefact/data/standard/CostSchedule_3p0.xsd" 
xmlns="urn:un:unece:uncefact:data:standard:CostSchedule:3">

我试图将其反序列化为由 xsd.exe 使用上述文档架构定义的类。课程是这样开始的:

<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038"), _
 System.SerializableAttribute(), _
 System.Diagnostics.DebuggerStepThroughAttribute(), _
 System.ComponentModel.DesignerCategoryAttribute("code"), _
 System.Xml.Serialization.XmlTypeAttribute([Namespace]:="urn:un:unece:uncefact:data:standard:CostSchedule:3"), _
 System.Xml.Serialization.XmlRootAttribute([ElementName]:="CostSchedule", [Namespace]:="urn:un:unece:uncefact:data:standard:CostSchedule:3", IsNullable:=False)> _
Partial Public Class CostScheduleType

谁能指出我在这里遗漏了什么?对我来说,我似乎拥有该类的所有必要序列化标签,但我似乎无法完成这项工作。

【问题讨论】:

  • 尝试序列化该类型的实例并将其与您的输入进行比较。
  • w3.org/2001/XMLSchema-instance" xmlns:xsd="w3.org/2001/XMLSchema" xmlns="urn:un:unece:uncefact:data:standard:CostSchedule:3" /> 是结果。当我尝试反序列化它时,我得到了同样的错误,这让我更加困惑。

标签: xml vb.net serialization


【解决方案1】:

想通了。

反序列化程序要求我明确说明我正在反序列化的对象的类型。

ElementsLocal = New CostScheduleType 
'This was ElementsLocal = New Object before

        Dim ser As New XmlSerializer(ElementsLocal.GetType)
        Using fs As FileStream = New FileStream(LocalFileURI, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
            Using objStreamReader As New XmlTextReader(fs)
                'If ser.CanDeserialize(objStreamReader) Then ElementsLocal = ser.Deserialize(objStreamReader)
                ElementsLocal = ser.Deserialize(objStreamReader)

【讨论】:

  • 为了完整起见,请发布您之前使用的代码以进行反序列化。此外,您不应使用new XmlTextReader()new XmlTextWriter()。自 .NET 2.0 以来,它们已被弃用。请改用XmlReader.Create()XmlWriter.Create()
  • 我在 C# 中有同样的问题,但这个答案对约翰所说的没有帮助...代码不完整
猜你喜欢
  • 2012-03-19
  • 1970-01-01
  • 2021-03-23
  • 2010-12-06
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2021-03-06
相关资源
最近更新 更多