Hallo Forum,
letztens hatte ich erst das Thema mit der LinkedList über verschiedene Klassen. Das wäre erstmal abgehakt und erledigt.
Nun stehe ich aber vor dem nächsten Problem und weiss keinen Rat.
Ich muss in der Arbeit eine XML einlesen. Die XML sieht etwa so aus:
Daraus berechne ich, über page-number, die erste und die letzte Seite eines Dokuments.
Blöderweise steht bei media-type hinterher [erste Seite 26] und [letzte Seite 26]. Statt 30.
Ich muss also einen Weg finden die Seiten 27 - 29 nicht zu erfassen - aber hier hänge ich fest.
Aktuell nutze ich folgenden Code, um die XML auszulesen:
Kann mir hier jemand helfen nur den ersten und letzten media-type zu lesen?
Oder alternativ, aber das glaube ich ist komplexer, die LinkedList zu bearbeiten.
Danke vorab und viele Grüße,
Floxnet
letztens hatte ich erst das Thema mit der LinkedList über verschiedene Klassen. Das wäre erstmal abgehakt und erledigt.
Nun stehe ich aber vor dem nächsten Problem und weiss keinen Rat.
Ich muss in der Arbeit eine XML einlesen. Die XML sieht etwa so aus:
XML-Quellcode
- <info section-type="register_b" section="1" page-number="11"/>
- <info section-type="register_b" section="2" page-number="25" media-type="yellow"/>
- <info page-number="26" media-type="yellow"/>
- <info page-number="27" media-type="yellow"/>
- <info page-number="28" media-type="yellow"/>
- <info page-number="29" media-type="yellow"/>
- <info page-number="30" media-type="yellow"/>
- <info section-type="register_b" section="3" page-number="68"/>
- <info section-type="register_b" section="4" page-number="81"/>
Daraus berechne ich, über page-number, die erste und die letzte Seite eines Dokuments.
Blöderweise steht bei media-type hinterher [erste Seite 26] und [letzte Seite 26]. Statt 30.
Ich muss also einen Weg finden die Seiten 27 - 29 nicht zu erfassen - aber hier hänge ich fest.
Aktuell nutze ich folgenden Code, um die XML auszulesen:
VB.NET-Quellcode
- Dim sectioncounter As Integer = 0
- Dim m_myXMLFile As Xml.XmlReader = New Xml.XmlTextReader("...")
- Do While m_myXMLFile.Read
- Select Case m_myXMLFile.NodeType
- Case Xml.XmlNodeType.Element
- If m_myXMLFile.Name = "info" Then
- If m_myXMLFile.AttributeCount > 0 Then
- While m_myXMLFile.MoveToNextAttribute
- If m_myXMLFile.Name = "page-number" Then
- Dim mySection As New CSection
- Dim fSkipPageCalc As Boolean = False
- sectioncounter += 1
- 'EIGENSCHAFTEN DER SECTION
- '---------------------------------------------------------------------
- If CDbl(m_myXMLFile.GetAttribute("page-number")) > 1 And m_XMLSections.Count = 0 Then
- ' Wenn die aktuelle page-number größer 1 ist und gleichzeitig kein Element in m_XMLSections enthalten ist, sind wir im ersten Element der XML-Datei
- ' und es liegt eine unbenannte Section vor der ersten Section
- ' Erzeuge an dieser Stelle eine unbenannte Section in der Aufzählung m_XMLSections
- fSkipPageCalc = True
- Dim myEmptySection As New CSection
- myEmptySection.FirstPage = 1
- myEmptySection.LastPage = CInt(CDbl(m_myXMLFile.GetAttribute("page-number")) - 1)
- myEmptySection.Count = CInt(CDbl(m_myXMLFile.GetAttribute("page-number")) - 1)
- m_XMLSections.AddLast(myEmptySection) 'Füge die leere Section in die Sections-Aufzählung hinzu
- End If
- 'Wir sind entweder im ersten Section-Element oder haben keine leere Section vor dem ersten Element
- 'FirstPage und LastPage berechnen
- mySection.FirstPage = CInt(m_myXMLFile.GetAttribute("page-number"))
- mySection.LastPage = 0 'Wir kennen die nächste Section noch nicht, deshalb vorläufig LastPage = 0 vergben
- mySection.Count = 0 'Wir kennen die Seitenzahlenn noch nicht
- mySection.MediaType = m_myXMLFile.GetAttribute("media-type")
- mySection.Section = m_myXMLFile.GetAttribute("section")
- mySection.SectionSheetOrg = CInt(m_myXMLFile.GetAttribute("page-number"))
- mySection.SectionType = m_myXMLFile.GetAttribute("section-type")
- If fSkipPageCalc = False Then
- 'Wir haben in der vorherigen Schleife bereits eine Section in die Sections-Auflistung hinzugefügt
- 'Aus dieser Section können wir nun die LastPage und den Count berechnen
- Dim PrevSection As CSection = New CSection
- Try
- PrevSection = m_XMLSections.Last.Value
- PrevSection.LastPage = mySection.FirstPage - 1
- PrevSection.Count = mySection.FirstPage - PrevSection.FirstPage
- Catch ex As Exception
- End Try
- End If
- mySection.SectionCounter = sectioncounter - 1
- m_XMLSections.AddLast(mySection)
- End If
- End While
- End If
- End If
- End Select
- Loop
Kann mir hier jemand helfen nur den ersten und letzten media-type zu lesen?
Oder alternativ, aber das glaube ich ist komplexer, die LinkedList zu bearbeiten.
Danke vorab und viele Grüße,
Floxnet