将OuterXML文本传递给类方法会返回一个立即异常

时间:2014-07-31 15:36:26

标签: xml vb.net xsd

我正在研究一名前雇员开发的项目。该项目有一个类,其中包含一个用于接受XML文档的函数,然后解析XML以查找与该类属性匹配的属性,然后返回使用属性值填充的类对象。

这是XSD文件,名为PTSPodResult.xsd

?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"     xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="PTSPodResult">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ResultText" type="xs:string" />
        <xs:element name="ReturnCode" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

这是类文件,名为PTSPodResultPartial.vb

Imports System.IO
Imports System.Xml.Serialization

Namespace TrackingObjects.V2.Rev1
    Partial Public Class PTSPodResult
        Shared Function Create(XmlString As String) As PTSPodResult

            Dim sr As StringReader = New StringReader(XmlString.ToString())
            Dim xsw As New XmlSerializer(GetType(PTSPodResult))
            Dim returnResult As New PTSPodResult

            Try
                Dim PTSPodResultLoaded = xsw.Deserialize(sr)
                returnResult = DirectCast(PTSPodResultLoaded, PTSPodResult)

            Catch ex As Exception
                Throw New Exception(XmlString)

            End Try

            Return returnResult

        End Function

        Friend Function ToXml() As String
            Return XsdSerializer.ToXml(Me, Me.GetType, "PTSPodResult")
        End Function
    End Class
End Namespace

当我调用create方法时,从webresponse传递outerXML,一旦它到达Create函数的第一行,它就返回一个异常。异常的ex.message值与我传递给函数的outerXML字符串相同。

下面列出了来自调用类的代码片段;

Try
    returnValue = TrackingObjects.V2.Rev1.PTSPodResult.Create(Response.OuterXml)
Catch ex As Exception
    RaiseEvent ResponseError(ex.Message)
End Try

Return returnValue

下面列出了Response.OuterXml的值;

<?xml version="1.0" encoding="UTF-8"?><PTSRRERESULT><ResultText>Your Proof of Delivery record is complete and will be processed shortly.</ResultText><ReturnCode>0</ReturnCode></PTSRRERESULT>

执行Try部分后,它会立即进入Catch部分。 ex.Message值列在下面;

<?xml version="1.0" encoding="UTF-8"?><PTSRRERESULT><ResultText>Your Proof of Delivery record is complete and will be processed shortly.</ResultText><ReturnCode>0</ReturnCode></PTSRRERESULT>

如您所见,excpetion消息值是保存文本,作为我发送给TrackingObjects.V2.Rev1.PTSPodResult.Create()函数的response.outerXML。

我的问题是,为什么调用TrackingObjects.V2.Rev1.PTSPodResult.Create()函数会立即返回异常?在调试器中,当我按下F11时,它甚至没有进入该功能。它只是返回调用者,抛出异常。

有什么想法吗?

谢谢,

戴夫

0 个答案:

没有答案