Das hatte ich bisher noch nicht probiert. Das versuche ich mal.Mal sehen ob ich das hinbekomme.
Code: Alles auswählen
Structure epg
sendername.s
start_stop.s
titel.s
genre.s
year.s
startdatum.s
stopdatum.s
freigabe.s
beschreibung1.s
beschreibung2.s
beschreibung3.s
beschreibung4.s
beschreibung5.s
beschreibung6.s
beschreibung7.s
beschreibung8.s
start.s
stop.s
EndStructure
Global NewList epg.epg()
Enumeration
#XML
EndEnumeration
Global tzi.TIME_ZONE_INFORMATION
Global Zeitversatz = GetTimeZoneInformation_(@tzi.TIME_ZONE_INFORMATION)
Global epgdir.s="C:\Users\Mike\ECC\et7500\EPG\"
Declare xml_to_struc()
Declare Fill_struc(*Currentnode,Currentsublevel)
Declare.s date_time_epg(datestring.s, wert)
xml_to_struc()
If ListSize(epg())>0
ForEach epg()
Debug "Sendername = "+epg()\sendername
Debug "Titel = "+epg()\titel
Debug "Start = "+epg()\start
Debug "Startdatum = "+epg()\startdatum
Debug "Stopdatum = "+epg()\stopdatum
Debug "Ende = "+epg()\stop
Debug "Genre = "+epg()\genre
Debug "Freigabe = "+epg()\freigabe
Debug "Jahr = "+epg()\year
Debug "Beschreibung = "+epg()\beschreibung1+epg()\beschreibung2+epg()\beschreibung3+epg()\beschreibung4+epg()\beschreibung5+epg()\beschreibung6+epg()\beschreibung7+epg()\beschreibung8
Next
EndIf
Procedure xml_to_struc()
Protected Filename$,
Currentsublevel=0
Protected Message$, *MainNode, Event, i
If ExamineDirectory(0, epgdir, "*.xml")
While NextDirectoryEntry(0)
If DirectoryEntryType(0)=#PB_DirectoryEntry_File
Filename$=DirectoryEntryName(0)
If FileName$ <> ""
If LoadXML(#XML, epgdir+FileName$)
FormatXML(#XML,#PB_XML_ReduceNewline|#PB_XML_CutNewline )
If XMLStatus(#XML) <> #PB_XML_Success
Message$ = "Error in the XML file:" + Chr(13)
Message$ + "Message: " + XMLError(#XML) + Chr(13)
Message$ + "Line: " + Str(XMLErrorLine(#XML)) + " Character: " + Str(XMLErrorPosition(#XML))
MessageRequester("Error", Message$)
status_xml=0
EndIf
*MainNode = MainXMLNode(#XML)
If *MainNode
Fill_struc(*Mainnode, Currentsublevel)
EndIf
FreeXML(#XML)
Else
MessageRequester("Error", "The EPG-file cannot be opened.")
EndIf
EndIf
EndIf
Wend
FinishDirectory(0)
Else
MessageRequester("Error", "Can`t open "+epgdir, #PB_MessageRequester_Error )
EndIf
EndProcedure
Procedure Fill_struc(*Currentnode,Currentsublevel)
Protected Text$, *ChildNode, Text1$
Protected prog_start_end_name.s, anzahl, dat.s, time.s, date_time_start.s, date_time_end.s, date_time_end1.s, prog_name.s, prog_genre.s, prog_genre1.s, prog_text.s, Text_ori.s, leng, y, datum.s, zeit.s, datum_ende.s
Protected prog_text1.s, prog_text2.s, prog_text3.s, prog_text4.s,prog_text5.s, prog_text6.s, prog_text7.s,prog_text8.s, jahr.s, channelid.s, channelname.s , year_.s, freigabe.s, year_epg.s, channel_.s, x, channel_id.s
Protected diff_to_utc.s, oldchannel.s
If XMLNodeType(*CurrentNode) = #PB_XML_Normal
Text$ = GetXMLNodeName(*CurrentNode)
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
Text$ + XMLAttributeName(*CurrentNode) + " " + XMLAttributeValue(*CurrentNode) +" "+GetXMLNodeText(*CurrentNode)
If FindString(Text$, " ")
Text$=ReplaceString(Text$, " ", " ")
EndIf
If FindString(Text$, " ")
Text$=ReplaceString(Text$, " ", " ")
EndIf
If FindString(Text$, " ")
Text$=ReplaceString(Text$, " ", " ")
EndIf
If FindString(Text$, " ")
Text$=ReplaceString(Text$, " ", " ")
EndIf
If FindString(Text$, "channelid")
channel_id=Trim(RemoveString(Text$, "channelid"))
ElseIf FindString(Text$, "display-namelang")
channelname=LCase(Trim(Mid(Text$, 20)))
channelname=ReplaceString(channelname, ".", " ")
ElseIf FindString(Text$, "programmestart") And FindString(Text$, "stop") And FindString(Text$, "channel")
prog_start_end_name=Trim(Text$)
diff_to_utc=Mid(prog_start_end_name, 31, 5)
If Left(diff_to_utc, 1)="+"
diff_to_utc=Mid(diff_to_utc, 3, 1)
ElseIf Left(diff_to_utc, 1)="-"
diff_to_utc=Mid(diff_to_utc, 1, 1)+Mid(diff_to_utc, 3, 1)
EndIf
AddElement(epg())
channelid=Mid(Text$, 70)
channelid=Trim(channelid)
date_time_start=Trim(Mid(Text$, 15, 14))
date_time_start=date_time_epg(date_time_start, Val(diff_to_utc))
epg()\startdatum=StringField(date_time_start, 1,"|")
date_time_start=StringField(date_time_start, 2, "|")
date_time_end=Trim(Mid(Text$, 41, 14))
date_time_end=date_time_epg(date_time_end, Val(diff_to_utc))
date_time_end1=StringField(date_time_end, 2, "|")
datum_ende=StringField(date_time_end, 1, "|")
channel_=Trim(Mid(Text$, 70))
epg()\start_stop=prog_start_end_name
epg()\start=date_time_start
epg()\sendername=channel_
epg()\stop=date_time_end1
epg()\stopdatum=datum_ende
ElseIf Mid(Text$, 1, 9)="titlelang"
epg()\titel=Mid(Text$, 14)
ElseIf Mid(Text$, 1, 3)="sub"
prog_genre=RemoveString(Text$, " ")
prog_genre=RemoveString(prog_genre, "(")
prog_genre=RemoveString(prog_genre, ")")
prog_genre=ReplaceString(prog_genre, "]", "|")
prog_genre=ReplaceString(prog_genre, "[", "|")
prog_genre1=StringField(prog_genre, 2, "|")
jahr=StringField(prog_genre, 3, "|")
freigabe=StringField(prog_genre, 4, "|")
epg()\freigabe=freigabe
epg()\genre=prog_genre1
epg()\year=jahr
ElseIf Mid(Text$, 1, 4)="desc"
prog_text =Trim(Mid(Text$, 13))
If FindString(prog_text, Chr(10))
prog_text=RemoveString(prog_text, Chr(10))
EndIf
If FindString(prog_text, Chr(13))
prog_text=RemoveString(prog_text, Chr(13))
EndIf
prog_text1=Mid(prog_text, 1, 200)
epg()\beschreibung1=prog_text1
prog_text2=Mid(prog_text, 201, 200)
epg()\beschreibung2=prog_text2
prog_text3=Mid(prog_text, 401, 200)
epg()\beschreibung3=prog_text3
prog_text4=Mid(prog_text, 601 , 200)
epg()\beschreibung4=prog_text4
prog_text5=Mid(prog_text, 801 , 200)
epg()\beschreibung5=prog_text5
prog_text6=Mid(prog_text, 1001 , 200)
epg()\beschreibung6=prog_text6
prog_text7=Mid(prog_text, 1201, 200)
epg()\beschreibung7=prog_text7
prog_text8=Mid(prog_text, 1401, 200)
epg()\beschreibung8=prog_text8
EndIf
Wend
EndIf
*ChildNode = ChildXMLNode(*CurrentNode)
While *ChildNode <> 0
CurrentSublevel + 1
Fill_struc(*ChildNode, Currentsublevel)
*ChildNode = NextXMLNode(*ChildNode)
Wend
EndIf
EndProcedure
Procedure.s date_time_epg(datestring.s, wert)
Protected jahr.s, monat.s, tag.s, stunde.s, minute.s, movie.s, datum_zeit.s, stunde_s, datum.s, zeit.s, date_time_unix, versatz
movie=datestring
jahr=Mid(movie, 0, 4)
monat=Mid(movie, 5, 2)
tag=Mid(movie, 7, 2)
stunde=Mid(movie, 9, 2)
minute=Mid(movie, 11, 2)
datum=tag+"."+monat+"."+jahr
zeit=stunde+":"+minute+":00"
date_time_unix=ParseDate("%dd.%mm.%yyyy%hh:%ii:%ss", datum+zeit)
versatz=wert-Zeitversatz
date_time_unix=AddDate(date_time_unix, #PB_Date_Hour, -versatz)
datum=FormatDate("%dd.%mm.%yyyy", date_time_unix)
zeit=FormatDate("%hh:%ii", date_time_unix)
datum_zeit.s=datum+"|"+zeit
ProcedureReturn datum_zeit.s
EndProcedure