Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.discuss.xmlToTable
on xmlToTable (xmltext, adrtable) {
local (xtable);
xml.compile (xmltext, @xtable);
scratchpad.xtable = xtable; //debugging
local (adrheader, adrbody, adrpayload, adrauthor, adrenclosure, adrnotify);
xml.getPathAddress (@xtable, "/ticket/header", @adrheader);
xml.getPathAddress (@xtable, "/ticket/body", @adrbody);
xml.getPathAddress (@xtable, "/ticket/payload", @adrpayload);
xml.getPathAddress (@xtable, "/ticket/header/author", @adrauthor);
xml.getPathAddress (@xtable, "/ticket/header/enclosure", @adrenclosure);
xml.getPathAddress (@xtable, "/ticket/header/notify", @adrnotify);
adrtable^.title = xml.getValue (adrheader, "title");
adrtable^.postTime = xml.getValue (adrheader, "posttime");
adrtable^.ticketnum = xml.getValue (adrheader, "ticketnum");
adrtable^.private = boolean (xml.getValue (adrheader, "private"));
adrtable^.authorName = xml.getValue (adrauthor, "name");
adrtable^.authorOrganization = xml.getValue (adrauthor, "organization");
adrtable^.authorMail = xml.getValue (adrauthor, "mail");
adrtable^.body = base64.decode (adrbody^);
try { //might not have an enclosure
local (xlist = xml.getAddressList (adrenclosure, "address"), item);
adrtable^.enclosureAddress = xlist [1]^; //we only support a single enclosure
adrtable^.enclosureType = xml.getValue (adrpayload, "type");
adrtable^.enclosureBits = xml.getValue (adrpayload, "bits")};
xlist = xml.getAddressList (adrnotify, "channel");
adrtable^.notifyList = {};
for item in xlist {
adrtable^.notifyList = adrtable^.notifyList + {item^}};
return (true)};
bundle { //test code
table.emptytable (@scratchpad.notetable);
xmltotable (xml.decompile (@nirvana.testing.testtable), @scratchpad.notetable)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.