Om jag har en XML-fil som ser ut ungefär som följer: XML står för eXtensible Markup Language. Ett universellt format för att beskriva och leverera strukturerad data. Dvs det är inte ett programmeringsspråk. Visst det förstår jag. Men går det inte att hoppa tillbaka? Det finns inget i XML som styr detta. Vill du formatera det finns det ett par vägar att gå. Ett är att transformera XML filen (finns artiklar att läsa om hur detta görs). Det andra är att i din kod läsa attributet count i Loop och skriva ut texterna inom loop taggarna count ggr. Vem sa att XML är ett programmeringsspråk?? Inte talaren innan i alla fall. Använd XSL för att formatera datat i en XML-fil. <code> Det var ett tjatande om XML. Vem har sagt att man programmerar MED XML. Det hela handlar om programmering MOT XML, eller snarare användningen av biblioteket System.Xml.XmlTextReader. Ha löst det nu. Tack till alla som försökte HJÄLPA och inte bara visa att jag var en okunnig nolla. Om du behöver loopen i VB-kod så verkar det bättre att följa mitt kodexempel, då det är onödigt att öppna och läsa samma fil flera gånger. Readern läser bara framåt. För att hoppa fram o tillbaks behöver du använda en document object model som finns t.ex. i klassen XmlDataDocument. Då läser man in hela filen i minnet och kan navigera i noderna med metoder som firstChild, nextSibling osv.. Du kan använda XPath för att söka i XML-datat osv.Hoppa tillbaka i XML
<loop count='10'>
<write text='Hello' />
<write text='World' />
</loop>
När jag med min XMLTextReader kommer till </loop> vill jag ju hoppa tillbaka upp till <loop count='10'>.
Hur gör jag det?Sv: Hoppa tillbaka i XML
allanSv: Hoppa tillbaka i XML
Jag använder det inte som ett programmeringsspråk utan för att formatera en utskrift. Och på utskriften vill jag att vissa rader ska komma med flera gånger.Sv: Hoppa tillbaka i XML
Sv: Hoppa tillbaka i XML
Vi på kontoret har lite svårt att fatta exakt vad du vill föra fram med uttalandet mer än att du minsann vet vad XML står för och att du kan definiera det.
//Mikael.NETSv: Hoppa tillbaka i XML
Loop i XML vore ju ganska dumt...Sv: Hoppa tillbaka i XML
Dim reader As New System.Xml.XmlTextReader("C:\temp\loop.xml")
While reader.Read
If reader.Name = "loop" Then
Dim count As Integer
Dim text As String
count = Integer.Parse(reader.GetAttribute("count"))
While reader.Read
Select Case reader.Name
Case "loop"
Exit While
Case "write"
text &= reader.GetAttribute("text")
End Select
End While
Dim i As Integer
For i = 1 To count
Console.WriteLine(text)
Next
End If
End While
</code>
Shit, inser att detta inte är svaret på din fråga. XmlTextReader kan bara läsa framåt, vilket framgår av dokumentationen citat: "Represents a reader that provides fast, non-cached, forward-only access to XML data.". rtfm.Sv: Hoppa tillbaka i XML
Nu räcker det med snusförnuftiga kommentarer från användare som tropr att de behärskar XML, tack så mycket.Sv: Hoppa tillbaka i XML
Jag gjorde två filer. main.xml och loop.xml
Main.xml:
<loop file='loop.xml' count='10' />
Loop.xml:
<write text='Hello' />
<write text='World' />
När jag kommer till <loop i main.xml är det bara att öppna loop.xml $count antal gånger.Sv: Hoppa tillbaka i XML
Sv: Hoppa tillbaka i XML
Denna klass skall du absolut känna till om du ska jobba med XML i .NET!
Tänk dock på att om du har mycket stora datamängder blir det lätt segt att läsa in allt i minnet. Men annars fungerar den här klassen utmärkt.
se URL:n
msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmldatadocumentmemberstopic.asp