2010-05-01 80 views
0

我在通过一个XML文件循环,并在单VB.NET通过XML循环存储在单

我的XML看起来像这样

<values> 
    <value></value> 
    <value>$1</value>   
    <value>$5,000</value>  
    <value>$10,000</value>  
    <value>$15,000</value>  
    <value>$25,000</value>  
    <value>$50,000</value>  
    <value>$75,000</value>  
    <value>$100,000</value>  
    <value>$250,000</value>  
    <value>$500,000</value>  
    <value>$750,000</value>  
    <value>$1,000,000</value> 
    <value>$1,250,000</value> 
    <value>$1,500,000</value> 
    <value>$1,750,000</value> 
    <value>$2,000,000</value> 
    <value>$2,500,000</value> 
    <value>$3,000,000</value> 
    <value>$4,000,000</value> 
    <value>$5,000,000</value> 
    <value>$7,500,000</value> 
    <value>$10,000,000</value> 
    <value>$15,000,000</value> 
    <value>$25,000,000</value> 
    <value>$50,000,000</value> 
    <value>$100,000,000</value> 
    <value>$100,000,000+</value> 
</values> 

存储值存在问题而我的功能看起来像这样

Public Class LoadValues 
    Private Shared SearchValuesInstance As List(Of SearchValues) = Nothing 

    Public Shared ReadOnly Property LoadSearchValues As List(Of SearchValues) 
     Get 
      Dim sv As New List(Of SearchValues) 

      If SearchValuesInstance Is Nothing Then 
       Dim objDoc As XmlDocument = New XmlDataDocument 
       Dim objRdr As XmlTextReader = New XmlTextReader(HttpContext.Current.Server.MapPath("~/App_Data/Search-Values.xml")) 
       objRdr.Read() 
       objDoc.Load(objRdr) 

       Dim root As XmlElement = objDoc.DocumentElement 
       Dim itemNodes As XmlNodeList = root.SelectNodes("/values") 

       For Each n As XmlNode In itemNodes 
        sv.Add(New SearchValues(n("@value").InnerText, n("@value").InnerText)) 
       Next 
       SearchValuesInstance = sv 

      Else : sv = SearchValuesInstance 
      End If 

      Return sv 
     End Get 
    End Property 

End Class 

我的问题是,我在sv.Add(New SearchValues(n("@value").InnerText, n("@value").InnerText))线得到一个object not set to an instance of an object

回答

0

好吧,我似乎找到了我的答案。希望这会帮助有同样问题的下一个人。

Public Class LoadValues 
    Private Shared SearchValuesInstance As List(Of SearchValues) = Nothing 

    Public Shared ReadOnly Property LoadSearchValues As List(Of SearchValues) 
     Get 
      Dim sv As New List(Of SearchValues) 

      If SearchValuesInstance Is Nothing Then 

       Dim objDoc As XmlDocument = New XmlDataDocument 
       objDoc.Load(HttpContext.Current.Server.MapPath("~/App_Data/Search-Values.xml")) 

       Dim root As XmlNode = objDoc.DocumentElement 
       Dim nodelist As XmlNodeList = root.SelectNodes("/values/value") 

       Dim value As Double 

       For Each n As XmlNode In nodelist 
        value = If(BizHelper.ConvertToDouble(n.InnerText) Is Nothing, 0, BizHelper.ConvertToDouble(n.InnerText)) 
        sv.Add(New SearchValues(n.InnerText, value)) 
       Next 

       SearchValuesInstance = sv 

      Else : sv = SearchValuesInstance 
      End If 

      Return sv 
     End Get 
    End Property 

    Public Shared Sub DisposeSearchValues() 
     SearchValuesInstance = Nothing 
    End Sub 

End Class