home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2005 March
/
PCWorld_2005-03_cd.bin
/
komunikace
/
kmeleon
/
kmeleon09.exe
/
aggreg8.jar
/
content
/
Parser.js
< prev
next >
Wrap
Text File
|
2004-12-01
|
11KB
|
305 lines
//Parser.js
var strbundle=document.getElementById("_stringbundle");
function Parser(ErrorString,XMLDOC)
{
aggreg8dump("Parsing");
var progress_meter = document.getElementById( "progress-meter" );
progress_meter.setAttribute( "mode", "determined");
progress_meter.setAttribute( "value", "0%");
document.getElementById( "rss-feed-text-description" ).setAttribute( "src", "" );
var completetext = "";
completetext = completetext + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
completetext = completetext + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 //EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
completetext = completetext + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\">";
completetext = completetext + "<head profile=\"http://www.w3.org/2000/08/w3c-synd/#\">";
completetext = completetext + "<meta name=\"generator\" content=\"HTML Tidy for Mac OS, see www.w3.org\" />";
completetext = completetext + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />";
completetext = completetext + "<link id=\"meta\" rel=\"rel:meta\" href=\"http://www.w3.org/2000/08/w3c-synd/#meta\"/>";
completetext = completetext + "<link rel=\"stylesheet\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstyle.css\" />";
completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"red\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstylered.css\" />";
completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"blue\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstyleblue.css\" />";
completetext = completetext + "<link rel=\"alternate stylesheet\" title=\"green\" type=\"text/css\" href=\"chrome://aggreg8/skin/rssstylegreen.css\" />";
completetext = completetext + "<title>Parsed RSS File</title>";
completetext = completetext + "<script type=\"text/javascript\" src=\"chrome://aggreg8/content/rssdisplay.js\">";
completetext = completetext + "</script>";
completetext = completetext + "<script type=\"text/javascript\" src=\"chrome://aggreg8/content/styleswitcher.js\">";
completetext = completetext + "</script>";
completetext = completetext + "</head>";
var style= readStyle();
completetext = completetext + "<body onload=\"setActiveStyleSheetXHTML('"+style+"');\">";
aggreg8dump("Parsing the Data");
var exTree = document.getElementById( "rssfeed-tree" );
var selectedItem = exTree.contentView.getItemAtIndex(exTree.currentIndex);
var rsstobeparsed = selectedItem.firstChild.firstChild.getAttribute("url");
var uri_box = document.getElementById( "rssfeed-uri" );
uri_box.value= rsstobeparsed;
var downloadingstring= strbundle.getString("downloadingstring");
//alert(rsstobeparsed + downloadingstring);
aggreg8dump(rsstobeparsed + downloadingstring);
//observe_isloaded(rsstobeparsed);
var progress_meter = document.getElementById( "progress-meter" );
var erroroccurred = "false";
var contenterroroccurred = "false";
var errorText = strbundle.getString("rsserrorText");
var errorDescription = strbundle.getString("rsserrorDescription");
//var errorDescription = strbundle.getString("rsserrorinvalidcontenttype");
aggreg8dump(XMLDOC);
var rssdocument = XMLDOC;
try{
var channelements = rssdocument.getElementsByTagName("channel");
var channelement = channelements[0];
var rsstitleElm = channelement.getElementsByTagName("title").item(0);
var rsstitleText = rsstitleElm.firstChild.nodeValue;
aggreg8dump(channelements.length);
}catch(e)
{
if(contenterroroccurred == "true")
{
var errorDescription = strbundle.getString("rsserrorinvalidcontenttype") + " " +rssdocument.contentType;
}
else
{
var errorDescription = strbundle.getString("rsserrorDescription");
}
erroroccurred = "true";
aggreg8dump(e);
}
try{
var rsstitleElm = channelement.getElementsByTagName("title").item(0);
var rsstitleText = rsstitleElm.firstChild.nodeValue;
}catch(e)
{
var rsstitleText = "";
aggreg8dump(e);
}
try{
var rssurlElm = channelement.getElementsByTagName("link").item(0);
var rssurlText = rssurlElm.firstChild.nodeValue;
}catch(e)
{
var rssurlText = "";
aggreg8dump(e);
//alert(e);
}
/*
try{
var rssimageElm = channelement.getElementsByTagName("image").item(0);
var rssimagesrc = rssimageElm.getAttribute("rdf:resource");
var rssimageText = "<a href=\""+rssurlText+"\" ";
rssimageText = rssimageText + " target=\"\" >";
rssimageText = rssimageText + "<img src=\""+rssimagesrc+"\"";
rssimageText = rssimageText + " title=\""+rsstitleText+"\" ";
rssimageText = rssimageText + " border=\"0\" ";
rssimageText = rssimageText + " alt=\""+rsstitleText+"\" />";
rssimageText = rssimageText + "</a>";
}catch(e)
{
var rssimageText = "";
aggreg8dump(e);
}
*/
try{
var rssdescElm = channelement.getElementsByTagName("description").item(0);
var rssdescText = rssdescElm.firstChild.nodeValue;
}catch(e)
{
var rssdescText = "";
aggreg8dump(e);
//alert(e);
}
aggreg8dump(erroroccurred);
if(erroroccurred == "true")
{
try{
aggreg8dump("inside if statement"+ erroroccurred);
completetext = completetext + "<table align='center' id='blog_header'><tr><td>";
completetext = completetext + "<p><b>"+errorText+"</a></b>";
completetext = completetext + "<br>"+errorDescription;
completetext = completetext + "<br><a href='"+rsstobeparsed+"' target='new' title='"+rsstobeparsed+"'>"+rsstobeparsed+"</a></p>";
completetext = completetext + "</td></tr></table><br/>";
}catch(e)
{
aggregdump(e);
}
}
else
{
completetext = completetext + "<div class=\"sideBlockRight\">";
completetext = completetext + " ";
completetext = completetext + "</div>";
completetext = completetext + "<div class=\"centerBlock\">";
completetext = completetext + "<div class=\"itemheader\">";
completetext = completetext + "<a href='"+rssurlText+"' target='new' ";
completetext = completetext + " title='"+rssurlText+"'>"+rsstitleText+"</a><br />";
completetext = completetext + rssdescText;
completetext = completetext + "</div>";
var allItems = rssdocument.getElementsByTagName("item");
var cardinality_box = document.getElementById( "rssfeed-cardinality" );
cardinality_box.value= allItems.length +" " + strbundle.getString("itemsstring");;
aggreg8dump(allItems.length + " items");
try{
var increment = 100 / allItems.length;
var current_progress = 0;
//alert(increment);
for (var i=0;i<allItems.length;i++)
{
completetext = completetext + "<br />";
completetext = completetext + "<div class=\"itemheader\">";
try{
current_progress = current_progress + increment;
progress_meter.setAttribute( "value", current_progress + "%");
}catch(e)
{
aggreg8dump("progress meter update failed");
}
var itemElm = allItems[i];
try{
var titleElm = itemElm.getElementsByTagName("title").item(0);
var titleText = titleElm.firstChild.nodeValue;
aggreg8dump(titleText);
}catch(e)
{
var titleText = "";
}
try{
var linkElm = itemElm.getElementsByTagName("link").item(0);
var linkURL = linkElm.firstChild.nodeValue;
//aggreg8dump(linkURL);
}catch(e)
{
var linkURL = "";
}
completetext = completetext + "<a href='"+linkURL+"' ";
completetext = completetext + " target='new'>"+titleText+"</a>";
completetext = completetext + "<br />";
completetext = completetext + "<div class=\"itemdescription\">";
try{
var descriptionElm = itemElm.getElementsByTagName("description").item(0);
var descriptionText = "";
try{
var test_var = descriptionElm.nodeName;
}
catch(e)
{
try{
var descriptionElm = itemElm.getElementsByTagName("content").item(0);
var test_var = descriptionElm.nodeName;
}
catch(e)
{
aggreg8dump("Could not find a description"+e);
}
}
try{
if(descriptionElm.firstChild.nextSibling.nodeName=="#cdata-section")
{
descriptionText = descriptionElm.firstChild.nextSibling.nodeValue;
//aggreg8dump("CDATA Tags : \n"+descriptionText);
var rExp = /href=/gi;
var newString = new String ("target='new' href=")
descriptionText = descriptionText.replace(rExp, newString)
completetext = completetext+descriptionText;
}
}catch(e)
{
try{
descriptionText = descriptionElm.firstChild.nodeValue;
//aggreg8dump("NoCdata Tags : \n"+descriptionText);
var rExp = /href=/gi;
var newString = new String ("target='new' href=")
descriptionText = descriptionText.replace(rExp, newString)
completetext = completetext + descriptionText;
}catch(e)
{
descriptionText = "";
aggreg8dump("No Description Tags : \n"+descriptionText);
completetext = completetext+descriptionText;
}
}
}catch(e)
{
aggreg8dump(e);
}
completetext = completetext + "<div class=\"clearer\"> </div>";
completetext = completetext+"</div>";
completetext = completetext + "</div>";
completetext = completetext + "<div class=\"spacer\"></div>";
}//end for loop
}catch(e)//catch any errors in the for loop
{
aggreg8dump(e);
}
}//end if error occurred
progress_meter.setAttribute( "value", "100%");
try{
completetext = completetext + "</div>";
completetext = completetext + "<div class=\"sideBlockLeft\">";
completetext = completetext + " ";
completetext = completetext + "</div>";
completetext = completetext + "</body>";
completetext = completetext + "</html>";
var doc = window.frames[1].document;
doc.open();
doc.write(completetext);
doc.close();
}catch(e)
{
alert(e);
}
}