VB.NET перебирает XML для хранения в синглтоне - PullRequest
0 голосов
/ 01 мая 2010

У меня проблема с циклическим просмотром 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

Моя проблема в том, что я получаю object not set to an instance of an object на линии sv.Add(New SearchValues(n("@value").InnerText, n("@value").InnerText)).

1 Ответ

0 голосов
/ 02 мая 2010

Хорошо, похоже, я нашел свой ответ. Надеюсь, это поможет следующему человеку с той же проблемой.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...