libxml and serialization
BlitzMax Forums/Brucey's Modules/libxml and serialization| 
 | ||
| Is there an example for reading xml files that use serialization? I'm going to read rss feeds, if anyone has experience doing that I'm looking for an example on that too. | 
| 
 | ||
| example of rss 2.0 feed taken from www.hulu.com/feed/show/60/episodes what is "<![CDATA[]]>"? | 
| 
 | ||
| A CDATA section is Character Data that is not parsed in the same way as the rest of the document. It means, characters that are normally not allowed in XML (like < and > for example) can appear in the CDATA section. | 
| 
 | ||
| Assuming RSS feeds use the same structure, I'd start by creating an object that matches that structure. Then write a little parser which maps the xml onto your object. say you have a String containing the feed : Local doc:TxmlDoc = TxmlDoc.parseDoc(text) Local root:TxmlNode = doc.GetRootElement() you might then pass the root node into a method of your mapper... 
Method map:RSSObject(root:TxmlNode)
  Local channel:TxmlNode = TxmlNode(root.GetFirstChild())
  Local rss:RSSObject = new RSSObject
  For Local part:TxmlNode = eachin channel.getChildren()
    select part.GetName()
      case "title"
         rss.SetTitle(part.GetContent())
      case "item"
         mapItem(rss, part)
    end select
  Next
  return rss
End Method
Method mapItem(rss:RSSObject, parent:TxmlNode)
... etc
  rss.AddItem(item)
End Method
or something like that. | 
| 
 | ||
| Thanks Brucey! this is a working rss feed reader example, it has an error on closing, but it works :) | 
| 
 | ||
| Nice :-) Just a couple of tweaks to make it happy to run on Mac : You need to remove wxLC_REPORT from the LCtr_ChannelItems create. Since you already have wxLC_LIST. You shouldn't connect to wxEVT_CLOSE_WINDOW and then in the event handler called Window.Close(). Either, don't connect at all (it will automagically quit the app when the last window is closed), or instead call Window.Destroy(). :o) | 
| 
 | ||
| Try using this as the rss feed: http://www.nytimes.com/services/xml/rss/nyt/Technology.xml Is there a way it can be a normal listbox (going down, instead of going on to the right)? EDIT: wxHtmlWindow updated version, includes another problem, when displaying the description the image does not show, however in firefox (opening the "test.html" file) shows everything correctly. | 
| 
 | ||
| Yes this data in the wrong column business vexed me as well. Never really found the solution. This (sort of) works. [edited to add hscrollbar] Oh, and you lose the first item, (it's in the invisible header) - so either dummy first item or create the header outside the for-next I guess. | 
| 
 | ||
| This will show them all:  Local row:Int
			  Local ritem:rssItem, wxl:wxListItem = New wxListItem.Create() 
				wxl.SetData(Null) wxl.SetText("") wxl.SetId(row) wxl.SetColumn(0) 
				LCtr_ChannelItems.InsertColumnItem(0, wxl) 
				
			  row:+1
				For ritem = EachIn rchan.chnItems
				  wxl:wxListItem = New wxListItem.Create() 
					wxl.SetData(ritem) wxl.SetText(ritem.Title) 
					wxl.SetId(row) wxl.SetColumn(0) 
					
					LCtr_ChannelItems.InsertItem(wxl) 
					row:+1
					
					Print ritem.Description
					
				Next | 
| 
 | ||
| Or even Local row:Int = 1 LCtr_ChannelItems.InsertColumnItem(0, New wxListItem.Create()) :-) No idea re that other problem though. I'm seeing an image in Leopard? I did read somewhere on the wxWidgets lists that wxHtmlWindow was considered a little flakey. Not what we want to hear I know. | 
| 
 | ||
| I can't currently test it in Ubuntu, and I don't have a mac. |