Code: Select all
Structure MovieData
MoviePlot.s
MovieCategory.s
MovieTitle.s
MovieDirectors.s
MovieWriters.s
MovieActors.s
EndStructure
Global Movie.MovieData
Declare ImportImdbDataFile()
Declare ImportImdbDataFile_XML(*CurrentNode, CurrentSublevel.i)
Procedure ImportImdbDataFile_XML(*CurrentNode, CurrentSublevel.i)
Protected NodeName.s, *ChildNode, AttributeName.s, FilenameString.s, PictureFileName.s, *Buffer
Protected FileSize.i, PictureFileHandle.i, FileNamesCountLoop.i, FileNamePart.s
Protected FileExtensionPart.s, Separator.s
If XMLNodeType(*CurrentNode) = #PB_XML_Normal
NodeName.s = GetXMLNodeName(*CurrentNode)
If NodeName.s = "title"
Movie\MovieTitle = GetXMLNodeText(*CurrentNode) + #LF$
If Movie\MovieTitle <> ""
Debug "Plot: " + Movie\MoviePlot
Debug "Category: " + Movie\MovieCategory
Debug "Title: " + Movie\MovieTitle
Debug "Directors: " + Movie\MovieDirectors
Debug "Writers: " + Movie\MovieWriters
Debug "Actors; " + Movie\MovieActors
EndIf
ElseIf NodeName.s = "plot"
Movie\MoviePlot = GetXMLNodeText(*CurrentNode) + #LF$
ElseIf NodeName.s = "genres"
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
AttributeName.s = XMLAttributeName(*CurrentNode)
If AttributeName.s = "item"
Movie\MovieCategory + XMLAttributeValue(*CurrentNode) + ","
EndIf
Wend
EndIf
ElseIf Nodename.s = "directors"
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
AttributeName.s = XMLAttributeName(*CurrentNode)
If AttributeName.s = "item"
Movie\MovieDirectors + XMLAttributeValue(*CurrentNode) + ","
EndIf
Wend
EndIf
ElseIf NodeName.s = "writers"
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
AttributeName.s = XMLAttributeName(*CurrentNode)
If AttributeName.s = "item"
Movie\MovieWriters + XMLAttributeValue(*CurrentNode) + ","
EndIf
Wend
EndIf
ElseIf NodeName.s = "actors"
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
AttributeName.s = XMLAttributeName(*CurrentNode)
If AttributeName.s = "item"
Movie\MovieActors + XMLAttributeValue(*CurrentNode) + ","
EndIf
Wend
EndIf
Else
; Debug
EndIf
*ChildNode = ChildXMLNode(*CurrentNode)
While *ChildNode <> 0
ImportImdbDataFile_XML(*ChildNode, CurrentSublevel + 1)
*ChildNode = NextXMLNode(*ChildNode)
Wend
EndIf
EndProcedure
Procedure ImportImdbDataFile()
Protected.i XML
Protected.q ImdbXMLFileSize.q
Protected *Buffer, *Node
ImdbXMLFile.i = ReadFile(#PB_Any, GetCurrentDirectory() + "Temporary\" + "ImdAPI.org.xml")
If ImdbXMLFile.i
ImdbXMLFileSize.q = Lof(ImdbXMLFile.i)
If ImdbXMLFileSize.q
*Buffer = AllocateMemory(ImdbXMLFileSize.q)
If *Buffer
If ReadData(ImdbXMLFile, *Buffer, ImdbXMLFileSize.q) = ImdbXMLFileSize.q
XML = CatchXML(#PB_Any, *Buffer, ImdbXMLFileSize.q)
If XML
*Node = MainXMLNode(XML)
If *Node
ImportImdbDataFile_XML(*Node, 0)
EndIf
FreeXML(XML)
Debug "Plot: " + Movie\MoviePlot
Debug "Category: " + Movie\MovieCategory
Debug "Title: " + Movie\MovieTitle
Debug "Directors: " + Movie\MovieDirectors
Debug "Writers: " + Movie\MovieWriters
Debug "Actors; " + Movie\MovieActors
EndIf
EndIf
FreeMemory(*Buffer)
EndIf
CloseFile(ImdbXMLFile.i)
EndIf
EndIf
EndProcedure
ImportImdbDataFile()
Code: Select all
<IMDBDocumentList>
<item>
<rating>9.0</rating>
<rating_count>673844</rating_count>
<year>1994</year>
<plot>Jules Winnfield and Vincent Vega are two hitmen who are out to retrieve a suitcas.</plot>
<genres>
<item>Crime</item>
<item>Thriller</item>
</genres>
<rated>R</rated>
<title>Pulp Fiction</title>
<imdb_url>http://www.imdb.com/title/tt0110912/</imdb_url>
<directors><item>Quentin Tarantino</item></directors>
<writers>
<item>Quentin Tarantino</item>
<item>Roger Avary</item>
<item>and 1 more credit</item>
</writers>
<actors>
<item>John Travolta</item>
<item>Samuel L. Jackson</item>
<item>Tim Roth</item>
<item>Amanda Plummer</item>
<item>Eric Stoltz</item>
<item>Bruce Willis</item>
<item>Ving Rhames</item>
<item>Phil LaMarr</item>
<item>Maria de Medeiros</item>
<item>Rosanna Arquette</item>
<item>Peter Greene</item>
<item>Uma Thurman</item>
<item>Duane Whitaker</item>
<item>Paul Calderon</item>
<item>Frank Whaley</item>
</actors>
<plot_simple>The lives of two mob hit men, a boxer, a gangster'sion.</plot_simple>
<type>M</type>
<poster>http://ia.media-imdb.com/images/M/MV5BMjE0ODk2NjczOV5BMl5BanBnXkFtZTYwNDQ0NDg4._V1._SY317_CR4,0,214,317_.jpg</poster>
<imdb_id>tt0110912</imdb_id>
<also_known_as>
<item>Tiempos violentos</item>
</also_known_as>
<language>
<item>English</item>
<item>Spanish</item>
<item>French</item>
</language>
<country><item>USA</item></country>
<release_date>19941014</release_date>
<filming_locations>1525 N. Van Ness Avenue, Los Angeles, California, USA</filming_locations>
<runtime>
<item>154 min</item>
<item>USA: 168 min (special edition)</item>
</runtime>
</item>
</IMDBDocumentList>