public FxStrikePrice(XmlNode xmlNode)
 {
     XmlNodeList rateNodeList = xmlNode.SelectNodes("rate");
     if (rateNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in rateNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 rateIDRef = item.Attributes["id"].Name;
                 PositiveDecimal ob = PositiveDecimal();
                 IDManager.SetID(rateIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 rateIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 rate = new PositiveDecimal(item);
             }
         }
     }
     
 
     XmlNodeList strikeQuoteBasisNodeList = xmlNode.SelectNodes("strikeQuoteBasis");
     if (strikeQuoteBasisNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in strikeQuoteBasisNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 strikeQuoteBasisIDRef = item.Attributes["id"].Name;
                 StrikeQuoteBasisEnum ob = StrikeQuoteBasisEnum();
                 IDManager.SetID(strikeQuoteBasisIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 strikeQuoteBasisIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 strikeQuoteBasis = new StrikeQuoteBasisEnum(item);
             }
         }
     }
     
 
 }
 public FxAsianFeature(XmlNode xmlNode)
 {
     XmlNodeList primaryRateSourceNodeList = xmlNode.SelectNodes("primaryRateSource");
     if (primaryRateSourceNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in primaryRateSourceNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 primaryRateSourceIDRef = item.Attributes["id"].Name;
                 InformationSource ob = InformationSource();
                 IDManager.SetID(primaryRateSourceIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 primaryRateSourceIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 primaryRateSource = new InformationSource(item);
             }
         }
     }
     
 
     XmlNodeList secondaryRateSourceNodeList = xmlNode.SelectNodes("secondaryRateSource");
     if (secondaryRateSourceNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in secondaryRateSourceNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 secondaryRateSourceIDRef = item.Attributes["id"].Name;
                 InformationSource ob = InformationSource();
                 IDManager.SetID(secondaryRateSourceIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 secondaryRateSourceIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 secondaryRateSource = new InformationSource(item);
             }
         }
     }
     
 
     XmlNodeList fixingTimeNodeList = xmlNode.SelectNodes("fixingTime");
     if (fixingTimeNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in fixingTimeNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 fixingTimeIDRef = item.Attributes["id"].Name;
                 BusinessCenterTime ob = BusinessCenterTime();
                 IDManager.SetID(fixingTimeIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 fixingTimeIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 fixingTime = new BusinessCenterTime(item);
             }
         }
     }
     
 
     XmlNodeList observationScheduleNodeList = xmlNode.SelectNodes("observationSchedule");
     if (observationScheduleNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in observationScheduleNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 observationScheduleIDRef = item.Attributes["id"].Name;
                 FxAverageRateObservationSchedule ob = FxAverageRateObservationSchedule();
                 IDManager.SetID(observationScheduleIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 observationScheduleIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 observationSchedule = new FxAverageRateObservationSchedule(item);
             }
         }
     }
     
 
     XmlNodeList rateObservationNodeList = xmlNode.SelectNodes("rateObservation");
     
     foreach (XmlNode item in rateObservationNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 rateObservationIDRef = item.Attributes["id"].Name;
                 List<FxAverageRateObservation> ob = new List<FxAverageRateObservation>();
                 ob.Add(new FxAverageRateObservation(item));
                 IDManager.SetID(rateObservationIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 rateObservationIDRef = item.Attributes["href"].Name;
             }
             else
             {
             rateObservation.Add(new FxAverageRateObservation(item));
             }
         }
     }
     
 
     XmlNodeList rateObservationQuoteBasisNodeList = xmlNode.SelectNodes("rateObservationQuoteBasis");
     if (rateObservationQuoteBasisNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in rateObservationQuoteBasisNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 rateObservationQuoteBasisIDRef = item.Attributes["id"].Name;
                 StrikeQuoteBasisEnum ob = StrikeQuoteBasisEnum();
                 IDManager.SetID(rateObservationQuoteBasisIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 rateObservationQuoteBasisIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 rateObservationQuoteBasis = new StrikeQuoteBasisEnum(item);
             }
         }
     }
     
 
     XmlNodeList payoutFormulaNodeList = xmlNode.SelectNodes("payoutFormula");
     if (payoutFormulaNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in payoutFormulaNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 payoutFormulaIDRef = item.Attributes["id"].Name;
                 XsdTypeString ob = XsdTypeString();
                 IDManager.SetID(payoutFormulaIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 payoutFormulaIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 payoutFormula = new XsdTypeString(item);
             }
         }
     }
     
 
     XmlNodeList precisionNodeList = xmlNode.SelectNodes("precision");
     if (precisionNodeList.Count > 1 )
     {
             throw new Exception();
     }
     
     foreach (XmlNode item in precisionNodeList)
     {
         if (item.Attributes["href"] != null || item.Attributes["id"] == null) 
         {
             if (item.Attributes["id"] != null) 
             {
                 precisionIDRef = item.Attributes["id"].Name;
                 XsdTypeNonNegativeInteger ob = XsdTypeNonNegativeInteger();
                 IDManager.SetID(precisionIDRef, ob);
             }
             else if (item.Attributes.ToString() == "href")
             {
                 precisionIDRef = item.Attributes["href"].Name;
             }
             else
             {
                 precision = new XsdTypeNonNegativeInteger(item);
             }
         }
     }
     
 
 }