反序列化XML会产生错误消息="&书信电报;MyClass xmlns=';http://medicareaustralia.gov.au/eclaiming/version 2'&燃气轮机;没有预料到。”;

反序列化XML会产生错误消息="&书信电报;MyClass xmlns=';http://medicareaustralia.gov.au/eclaiming/version 2'&燃气轮机;没有预料到。”;,xml,vb.net,xmlserializer,Xml,Vb.net,Xmlserializer,我在反序列化以下xml时遇到问题。“我得到的例外是”http://medicareaustralia.gov.au/eclaiming/version 没有预料到。” 我对XML缺乏了解,对XML的理解有限,这让我很难找到解决方案 这就是我的XML的样子: <?xml version="1.0" encoding="UTF-8" ?> <ns1:patienteClaimingResponse xmlns:ns1="http://medicareaustralia.gov.

我在反序列化以下xml时遇到问题。“我得到的例外是”http://medicareaustralia.gov.au/eclaiming/version 没有预料到。” 我对XML缺乏了解,对XML的理解有限,这让我很难找到解决方案

这就是我的XML的样子:

<?xml version="1.0" encoding="UTF-8" ?> 
<ns1:patienteClaimingResponse xmlns:ns1="http://medicareaustralia.gov.au/eclaiming/version  2">
    <claim medicareAcceptanceType="NAC" assessmentStatus="OK" accountPaidInd="N">
        <voucher voucherId="01">
            <service serviceId="0001" dateOfService="2015  11  17+11:00" assessmentStatus="ERR" chargeAmount="14815" patientContribAmt="4000" mbsItemNum="55036">
            <assessmentExplanation code="9632" /> 
            </service>
            <service serviceId="0002" dateOfService="2015 11 17+11:00" assessmentStatus="OK" chargeAmount="14605" benefitAmount="1" patientContribAmt="4500" scheduleFee="1" mbsItemNum="55032">
            <assessmentExplanation code="0" /> 
            </service>
        </voucher>
    <claimant currentSubnumerate="1" currentMedicareCardNum="6950323991">
        <identity firstName="CELINA" lastName="HOBBS" /> 
    </claimant>
    <patient currentSubnumerate="1" currentMedicareCardNum="6950323991">
        <identity firstName="CELINA" lastName="HOBBS" /> 
    </patient>
    <provider providerNum="2402491W">
        <name>L ARKIE</name> 
    </provider>
    <assessmentError code="0" /> 
    </claim>
</ns1:patienteClaimingResponse>

阿尔基
我想做的是将此xml反序列化到我的类中,我的类定义如下所示:

Imports System.Xml.Serialization

<XmlRoot(ElementName:="patienteClaimingResponse", Namespace:="")>
Public Class PatienteClaimingResponse
    <XmlElement("claim")>
    Public Property Claim As Claim
End Class

Public Class Claim
    <XmlAttributeAttribute("medicareAcceptanceType")>
    Public Property MedicareAcceptanceType As String

    <XmlAttributeAttribute("assessmentStatus")>
    Public Property AssessmentStatus As String

    <XmlAttributeAttribute("accountPaidInd")>
    Public Property AccountPaidInd As String

    <XmlElement("voucher")>
    Public Property Voucher As Voucher

    <XmlElement("claimant")>
    Public Property Claimant As Claimant

    <XmlElement("patient")>
    Public Property Patient As Patient

    <XmlElement("provider")>
    Public Property Provider As Provider

    <XmlElement("assessmentError")>
    Public Property AssessmentError As AssessmentError

End Class

Public Class Voucher
    <XmlAttributeAttribute("voucherId")>
    Public Property VoucherId As String

    <XmlElement("service")>
    Public Property Services As List(Of Service)
End Class

Public Class Service
    <XmlAttributeAttribute("serviceId")>
    Public Property ServiceId As String

    <XmlAttributeAttribute("dateOfService")>
    Public Property DateOfService As String

    <XmlAttributeAttribute("assessmentStatus")>
    Public Property AssessmentStatus As String

    <XmlAttributeAttribute("chargeAmount")>
    Public Property ChargeAmount As String

    <XmlAttributeAttribute("benefitAmount")>
    Public Property BenefitAmount As String

    <XmlAttributeAttribute("patientContribAmt")>
    Public Property PatientContribAmt As String

    <XmlAttributeAttribute("scheduleFee")>
    Public Property ScheduleFee As String

    <XmlAttributeAttribute("mbsItemNum")>
    Public Property MbsItemNum As String

    <XmlElement("assessmentExplanation")>
    Public Property assessmentExplanation As AssessmentError

End Class

Public Class Claimant
    <XmlAttributeAttribute("CurrentSubnumerate")>
    Public Property currentSubnumerate As String

    <XmlAttributeAttribute("CurrentMedicareCardNum")>
    Public Property currentMedicareCardNum As String

    <XmlElement("identity")>
    Public Property Identity As Identity
End Class

Public Class Patient
    <XmlAttributeAttribute("CurrentSubnumerate")>
    Public Property currentSubnumerate As String

    <XmlAttributeAttribute("CurrentMedicareCardNum")>
    Public Property currentMedicareCardNum As String

    <XmlElement("identity")>
    Public Property Identity As Identity
End Class

Public Class Provider
    <XmlAttributeAttribute("providerNum")>
    Public Property ProviderNum As String

    <XmlElement("name")>
    Public Property Name As String
End Class

Public Class Identity
    <XmlAttributeAttribute("firstName")>
    Public Property FirstName As String

    <XmlAttributeAttribute("lastName")>
    Public Property LastName As String
End Class

Public Class AssessmentError
    <XmlAttributeAttribute("code")>
    Public Property Code As String
End Class
Imports System.Xml.Serialization
公开课病人投诉回应
作为债权的公共财产债权
末级
公共类索赔
公共属性MedicareCeptanceType为字符串
公共财产评估状态为字符串
公共属性AccountPaidId为字符串
作为凭证的公共财产凭证
作为申索人的公共财产申索人
公共财产病人作为病人
公共财产提供者作为提供者
公共财产评估错误作为评估错误
末级
公课券
作为字符串的公共属性VoucherId
公共财产服务(服务清单)
末级
公务舱服务
作为字符串的公共属性ServiceId
公共属性DateOfService作为字符串
公共财产评估状态为字符串
公共属性ChargeAmount作为字符串
公共财产收益金额为字符串
公共属性PatientContribAmt作为字符串
公共属性ScheduleFee作为字符串
公共属性MbsItemNum作为字符串
公共财产评估解释为评估错误
末级
公共类索赔人
公共属性currentSubnumerate为字符串
公共属性CurrentMedicardNum作为字符串
作为身份的公共财产身份
末级
公立病人
公共属性currentSubnumerate为字符串
公共属性CurrentMedicardNum作为字符串
作为身份的公共财产身份
末级
公共类提供者
公共属性ProviderNum作为字符串
作为字符串的公共属性名称
末级
公共阶级身份
公共属性FirstName作为字符串
公共属性LastName作为字符串
末级
公共类评估错误
作为字符串的公共属性代码
末级
这是我的反序列化代码

Dim ppClaim As New PatienteClaimingResponse
Dim serializer As New Xml.Serialization.XmlSerializer(ppClaim.GetType)
Try
     Dim mystreamReader As New System.IO.StreamReader("C:\Laavanya\EasyClaimRes.xml")
     Dim TargetObject As New PatienteClaimingResponse
     TargetObject = serializer.Deserialize(mystreamReader)
     mystreamReader.Close()
Catch ex As Exception
     Dim s As String = ex.InnerException.ToString 
     'Throws "<patienteClaimingResponse xmlns='http://medicareaustralia.gov.au/eclaiming/version  2'> was not expected."
End Try
Dim ppClaim作为新的PatienteClaiming响应
Dim序列化程序作为新的Xml.Serialization.XmlSerializer(ppClaim.GetType)
尝试
Dim mystreamReader作为新的System.IO.StreamReader(“C:\Laavanya\EasyClaimRes.xml”)
Dim Target对象作为新患者投诉响应
TargetObject=serializer.Deserialize(mystreamReader)
mystreamReader.Close()
特例
Dim s As String=ex.InnerException.ToString
“扔”是不可能的
结束尝试

我注意到,如果我删除名称空间的别名(即ns1),反序列化似乎不会有什么问题。如果是这种情况,有没有办法用别名信息装饰我的类?

您的问题是根元素iteself位于名称空间
”http://medicareaustralia.gov.au/eclaiming/version  2“
但所有子元素都不在名称空间中。因此,您需要:

<XmlRoot(ElementName:="patienteClaimingResponse", Namespace:="http://medicareaustralia.gov.au/eclaiming/version  2")>
Public Class PatienteClaimingResponse
    <XmlElement("claim", Namespace:="")>
    Public Property Claim As Claim
End Class

公开课病人投诉回应
作为债权的公共财产债权
末级
工作