<Request>
    <streamingNo></streamingNo>
    <opFlag></opFlag>
    <productID></productID>
    <serviceID></serviceID>
    <SPID></SPID>
    <chargingPolicyID></chargingPolicyID>
    <status></status>
    <statusEffectiveTime></statusEffectiveTime>
    <chargingPolicyCN></chargingPolicyCN>
    <chargingPolicyEN></chargingPolicyEN>
    <corpOnly></corpOnly>
    <releaseTime></releaseTime>
    <subscriptionSyncFlag></subscriptionSyncFlag>
    <needCnfm></needCnfm>
    <packageFlag></packageFlag>
    <portalUseFlag></portalUseFlag>
    <sellFlag></sellFlag>
    <productDesc></productDesc>
    <CRBTProductType></CRBTProductType>
    <accessNoAndfeatureStr>
      <accessNo></accessNo>
      <accessNoMatchMode></accessNoMatchMode>
      <accessNoType></accessNoType>
      <featureStr></featureStr>
      <featureStrType></featureStrType>
      <featureStrMatchMode></featureStrMatchMode>
    </accessNoAndfeatureStr>
    <RRID></RRID>
    <productName></productName>
    <trialFlag></trialFlag>
    <subEffectMode></subEffectMode>
    <PayType></PayType>
    <isTrailInPeriod></isTrailInPeriod>
  </Request>这个是一个WS的字符串请求,我要怎么写才能将这个请求反序列化成类我自己的代码:
XmlSerializer xs = new XmlSerializer(typeof(ProductInfoReqObject));TextReader tr = new StringReader(ProductInfoReq.Request);ProductInfoReqObject request = (ProductInfoReqObject)xs.Deserialize(tr);会提示:XML 文档(1, 4)中有错误。   在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   在 System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
   在 IsmpVnetEngine.ISMPVnetEngine.IsmpVnetEngine.IIsmpVnetEngineSoapBinding.vnetProductInfo(VnetProductInfoReq vnetProductInfoReq)

解决方案 »

  1.   

    附上我定义的ProductInfoReqObject,是不是没有加上xml描述的问题
    public class ProductInfoReqObject
        {        public string streamingNo;

            public string opFlag;        public string productID;        public string serviceID;        public string SPID;        public string chargingPolicyID;        public string status;        public string statusEffectiveTime;        public string chargingPolicyCN;        public string chargingPolicyEN;        public string corpOnly;        public string releaseTime;        public string subscriptionSyncFlag;        public int needCnfm;        public string packageFlag;        public string portalUseFlag;        public string sellFlag;        public string productDesc;        public string CRBTProductType;        [System.Xml.Serialization.XmlElementAttribute("accessNoAndfeatureStr")]
            public AccessNoAndFeatureStrType[] accessNoAndfeatureStr;        public string[] chargingURL;        public string RRID;        public string productName;        public string trialFlag;        public string subEffectMode;        public string EffectTime;        public string withdrawEffectMode;        public string trialType;        public string trialTerm;        public string PayType;        public string isTrailInPeriod;
        }
        public class AccessNoAndFeatureStrType
        {        public string accessNo;        public string accessNoMatchMode;        public string accessNoType;        public string featureStr;        public string featureStrType;        public string featureStrmatchMode;
        }
      

  2.   

    你的xml文件中的节点和ProductInfoReqObject类中的字段不匹配啊!!
    还有要按序列化的xml文件的格式必须是:
    <?xml version="1.0"?>
    <ProductInfoReqObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <streamingNo>aaa</streamingNo>
      <opFlag>e</opFlag>
      .......
    </ProductInfoReqObject>这样就没问题了.
      

  3.   

    而且根节点必须是ProductInfoReqObject, xmls:xsi="**" xmlns:xsd="**"
    其中**是任何不为空的值就行.这样格式的xml才能被反序列化.