Results 1 to 32 of 32

Thread: VB.NET: Get the Attribute and Text out from Xml....[Resolved]

Hybrid View

  1. #1

    Thread Starter
    Addicted Member toytoy's Avatar
    Join Date
    Jul 2004
    Posts
    230

    Re: VB.NET: Get the Attribute and Text out from Xml....[Unresolved]

    According to the above XML tags...

    I want to extract all attributes and display accordingly...

    I will always have duplicate values...

    That means...my looping is wrong..

    Any ideas how to do a simple and accurate compare loop and extract the required attributes from all the loop into different listbox...

    Thanks

  2. #2
    Your Ad Here! Edneeis's Avatar
    Join Date
    Feb 2000
    Location
    Moreno Valley, CA (SoCal)
    Posts
    7,339

    Re: VB.NET: Get the Attribute and Text out from Xml....[Unresolved]

    Post your code and I'll help you fix it.

  3. #3

    Thread Starter
    Addicted Member toytoy's Avatar
    Join Date
    Jul 2004
    Posts
    230

    Re: VB.NET: Get the Attribute and Text out from Xml....[Unresolved]

    Say when I press a button, the server will send the Xml tag as below..
    Code:
    <Books>
          <Title section ="1">
              <Reference web = "www.any.com" topic = "1">
          </Title>
          <Title section ="5">
              <Reference web = "www.idea.com" topic = "2">
          </Title>
          <Title section ="5">
              <Reference web = "www.howTo.com" topic = "3">
          </Title>
          <Title section ="9">
              <Reference web = "www.do.com" topic = "4">
          </Title>
    </Books>
    The first thing i did was to pass the whole tag to this sortXml method
    whereby it will extract the section out to compare...
    Code:
          Public Function sortXml(ByVal wholeXml As String) As String
    
            Dim no As String
            Dim xdoc As New XmlDocument
    
          Try
                xdoc.LoadXml(wholeXml)
    
             For Each nod As XmlNode In xdoc.SelectNodes("//Books/Title")
                no = nod.Attributes("section").Value
                sortSection(no, wholeXml)  ' then i pass here to check the exponent
            Next
    
          Catch ex As Exception
    
            End Try
      End Function
    Since i must compare the exponent so i declare the constant and set some flags to false
    Code:
    Const mintSCIENCE As Integer = 0
    Const mintGENERAL As Integer = 1
    Const mintCOMPUTER As Integer = 2
    Dim blnScience, blnGeneral, blnComputer As boolean
    The code inside sortSection is:
    Code:
    Public Function sortSection(ByVal sect As Integer, ByVal wholeXml2 As String)
    
            blnScience = False
            blnGeneral = False
            blnComputer = False
            Dim strScience, strGerenal, strComputer, output as String
       
            Dim xdoc As New XmlDocument
            xdoc.LoadXml(wholeXml2)
            output = sect
    
      If output = pow(mintSCIENCE, 2) Or output > pow(mintSCIENCE,2)  Then
           blnScience = True
           output = output - pow(mintSCIENCE, 2)
           strScience = "Science"      ' I will pass and compare this string  
           populateData(strScience, wholeXml2)  ' inside the populateData method 
      End If
    
      If output = pow(mintGENERAL, 2) Or output > pow(mintGENERAL, 2) Then
           blnGeneral = True
           output = output - pow(mintGENERAL, 2)
           strGeneral = "General"
           populateData(strGeneral, wholeXml2)
      End If
    
      If output = pow(mintCOMPUTER, 2) Or output > pow(mintCOMPUTER, 2) Then
           blnComputer = True
           output = output - pow(mintCOMPUTER, 2)
           strComputer = "Computer"
           populateData(strComputer, wholeXml2)
      End If
    End function
    The codes for pow and populateData are:
    Code:
    Public Function pow(ByVal exponent As Integer, ByVal base As Integer)
    
       result = 1       'Assume all the values are declared
       Dim i As Integer
       For i = 0 To exponent - 1 Step i + 1
           result = result * base
       Next
       Return result
    
    End Function
    
    Public Sub populateData(ByVal val As String, ByVal wholeXml3 As String)
    
            Dim str1, str2 As String
            Dim xdoc As New XmlDocument
            xdoc.LoadXml(wholeXml3)
    
            If val = "Science" Then
    
         For Each nod As XmlNode In xdoc.SelectNodes("//Books/Title/Reference")
                    str1 = nod.Attributes("web").Value 
                    str2 = nod.Attributes("topic").Value 
                    lst1.Items.Add(str1)
                    lst1.Items.Add(str2)
                Next
            End If
    
         If val = "General" Then
    
        For Each nod As XmlNode In xdoc.SelectNodes("//Books/Title/Reference")
                 str1 = nod.Attributes("web").Value 
                 str2 = nod.Attributes("topic").Value 
                 lst2.Items.Add(str1)
                 lst2.Items.Add(str2)
                Next
        End If
    
        If val = "Computer" Then
    
        For Each nod As XmlNode In xdoc.SelectNodes("//Books/Title/Reference")
                 str1 = nod.Attributes("web").Value 
                 str2 = nod.Attributes("topic").Value 
                 lst3.Items.Add(str1)
                 lst3.Items.Add(str2)
                Next
        End If
    I have a lot of logic error which i can't figure out how to solve when it involve exponent to compare and populate the data into the listboxes...

    Thanks
    Last edited by toytoy; Jan 23rd, 2005 at 08:03 PM.

  4. #4

    Thread Starter
    Addicted Member toytoy's Avatar
    Join Date
    Jul 2004
    Posts
    230

    Re: VB.NET: Get the Attribute and Text out from Xml....[Unresolved]

    Does anyone know how to solve....

    Thanks

  5. #5

    Thread Starter
    Addicted Member toytoy's Avatar
    Join Date
    Jul 2004
    Posts
    230

    Re: VB.NET: Get the Attribute and Text out from Xml

    Finally item will not duplicate.....

    Code:
          Public Function sortXml(ByVal wholeXml As String) As String
    
            Dim no, web2, topics2 As String
            Dim xdoc As New XmlDocument
            Dim nod2 As XmlNode
    
          Try
             xdoc.LoadXml(wholeXml)
    
             For Each nod As XmlNode In xdoc.SelectNodes("//Books/Title")
                no = nod.Attributes("section").Value
                nod2 = nod.FirstChild()
                web2 = nod2.Attributes("web").Value 
                topics2 = nod2.Attributes("topic").Value 
                sortSection(no, web2, topics2)  ' then i pass here to check the exponent
            Next
    
          Catch ex As Exception
    
            End Try
      End Function
    Since i must compare the exponent so i declare the constant and set some flags to false
    Code:
    Const mintSCIENCE As Integer = 0
    Const mintGENERAL As Integer = 1
    Const mintCOMPUTER As Integer = 2
    Dim blnScience, blnGeneral, blnComputer As boolean
    The code inside sortSection is:
    Code:
    Public Function sortSection(ByVal sect As Integer, ByVal web3 As String, ByVal topics3 As String )
    
    blnScience = False
    blnGeneral = False
    blnComputer = False
    Dim strScience, strGerenal, strComputer, output as String
       
    output = sect
    
    If output = pow(mintSCIENCE, 2) Or output > pow(mintSCIENCE,2)  Then
       blnScience = True
       output = output - pow(mintSCIENCE, 2)
       strScience = "Science"      ' I will pass and compare this string  
       populateData(strScience, web3, topics3)  ' inside the populateData method 
    End If
    
    If output = pow(mintGENERAL, 2) Or output > pow(mintGENERAL, 2) Then
       blnGeneral = True
       output = output - pow(mintGENERAL, 2)
       strGeneral = "General"
       populateData(strGeneral, web3, topics3)
    End If
    
    If output = pow(mintCOMPUTER, 2) Or output > pow(mintCOMPUTER, 2) Then
       blnComputer = True
       output = output - pow(mintCOMPUTER, 2)
       strComputer = "Computer"
       populateData(strComputer, web3, topics3)
    End If
    
    End function
    The codes for pow and populateData are:
    Code:
    Public Function pow(ByVal exponent As Integer, ByVal base As Integer)
    
      result = 1         'Assume all the values are declared
      Dim i As Integer
      For i = 0 To exponent - 1 Step i + 1
           result = result * base
      Next
      Return result
    End Function
    
    Public Sub populateData(ByVal val As String, ByVal web4 As String, ByVal topics4 As String)
    
        
      If val = "Science" Then
    
         lst1.Items.Add(web4)
         lst1.Items.Add(topics4)
         
      End If
    
      If val = "General" Then
    
         lst2.Items.Add(web4)
         lst2.Items.Add(topics4)
      End If
    
      If val = "Computer" Then
    
         lst3.Items.Add(web4)
         lst3.Items.Add(topics4)
               
      End If
    
    End sub
    Last edited by toytoy; Jan 23rd, 2005 at 08:04 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width