[VB.NET] Stukken uit xml lezen

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

  • voodoo202
  • Registratie: Januari 2002
  • Laatst online: 04-08-2025
Ik wil graag alle meldingen die mijn programma kan laten zien in een XML file stoppen, zodat ik deze makkelijk in een andere taal kan maken.

Het probleem is alsvolgt ik heb een melding nummer 12 bijv. nu moet ik eigenlijk de tekst die daarbij hoort laten zien op het scherm, ik kan natuurlijk de xml file openen en een loop doen door het hele bestand totdat ik nummer 12 heb gevonden, en daar de tekst van laten zien. Zo heb ik het nu gemaakt. Maar ik weet niet of dit de officiele manier is.

Hier heb ik een stukje voorbeeld code wat ik nu in gebruik heb. Ik heb er dan een IF constructie ingebouwd die kijkt of de waarde voorkomt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Imports System.IO
Imports System.Xml
Module ParsingUsingXmlTextReader
Sub Main()
  Dim m_xmlr As XmlTextReader
  'Create the XML Reader
  m_xmlr = New XmlTextReader("C:\Personal\family.xml")
  'Disable whitespace so that you don't have to read over whitespaces
  m_xmlr.WhiteSpaceHandling = WhiteSpaceHandling.NONE
  'read the xml declaration and advance to family tag
  m_xmlr.Read()
  'read the family tag
  m_xmlr.Read()
  'Load the Loop
  While Not m_xmlr.EOF
    'Go to the name tag
    m_xmlr.Read()
    'if not start element exit while loop
    If Not m_xmlr.IsStartElement() Then
      Exit While
    End If
    'Get the Gender Attribute Value
    Dim genderAttribute = m_xmlr.GetAttribute("gender")
    'Read elements firstname and lastname
    m_xmlr.Read()
    'Get the firstName Element Value
    Dim firstNameValue = m_xmlr.ReadElementString("firstname")
    'Get the lastName Element Value
    Dim lastNameValue = m_xmlr.ReadElementString("lastname")
    'Write Result to the Console
    Console.WriteLine("Gender: " & genderAttribute _
      & " FirstName: " & firstNameValue & " LastName: " _
      & lastNameValue)
    Console.Write(vbCrLf)
  End While
  'close the reader
  m_xmlr.Close()
End Sub
End Module


Ik kan me voor stellen, dat je net zoals met een gewone database een select kunt doen op een record. Dat lijkt mij in ieder geval sneller. Maar hoe zou ik dit moeten doen.

[ Voor 35% gewijzigd door voodoo202 op 27-07-2004 19:35 . Reden: verkeerde code gepost ]


Verwijderd

Iets dergelijks kan maar gebruik dan een XmlDocument ipv XmlTextReader.

Dan kun je met de methods SelectNodes en SelectSingleNode in combinatie met een XPath query de nodes selecteren waarmee je verder wilt.

Voor voorbeelden van XPath queries: www.w3schools.com

  • voodoo202
  • Registratie: Januari 2002
  • Laatst online: 04-08-2025
Dat is nou net wat ik zocht. XMLdocument, hierover is een hoop te vinden.

En je kunt gewoon aangeven waar hij moet zoeken in het document.

Bedankt

  • voodoo202
  • Registratie: Januari 2002
  • Laatst online: 04-08-2025
Ik heb w3school.com bekeken.

Maar ik kan er niet duidelijk uithalen hoe ik nu meerdere selecties maak.

Ik heb dit xml bestand

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <?xml version="1.0" encoding="ISO-8859-1" ?> 
- <Captions>
     - <Caption id="1">
           <Naam>Selecteer Database</Naam> 
           <Taal>NL</Taal> 
           <CaptionID>1</CaptionID> 
      </Caption>
      - <Caption id="4">
            <Naam>User data :</Naam> 
            <Taal>NL</Taal> 
            <CaptionID>4</CaptionID> 
       </Caption>
  </Captions>

enz.


Nu wil ik graag Caption id1 met de taal NL

Zo haal ik op dit moment de naam op van de Caption met id1
code:
1
Captions.SelectSingleNode("/Captions/Caption[@id='1']/Naam").InnerXml


Weet iemand hoe ik een 2e criterium kan opgeven?

  • johnny7
  • Registratie: November 2000
  • Laatst online: 07-11-2023
voodoo202 schreef op 02 augustus 2004 @ 23:32:

Nu wil ik graag Caption id1 met de taal NL

Zo haal ik op dit moment de naam op van de Caption met id1
code:
1
Captions.SelectSingleNode("/Captions/Caption[@id='1']/Naam").InnerXml


Weet iemand hoe ik een 2e criterium kan opgeven?
Zoiets misschien?
code:
1
Captions.SelectSingleNode("/Captions/Caption[@id='1' and ./Taal='NL']/Naam").InnerXml

  • voodoo202
  • Registratie: Januari 2002
  • Laatst online: 04-08-2025
Daar ben ik nu al 2 uur naar op zoek.

Bedankt
Pagina: 1