\$\begingroup\$
\$\endgroup\$
Could you please review the following? My concern is XML parsing is hardcoded:
Ext.Ajax.request({
url: storageDataItem.contentlink,
success: function (response) {
var store;
try {
var parser = new DOMParser();
// TODO: remove extra lines or ignore on parsing. How? :)
var xml = parser.parseFromString(response.responseText, "text/xml");
var mediaContentURL = response.responseXML.childNodes[0].childNodes[0].childNodes[1].lastChild.attributes[0].nodeValue;
var title = xml.getElementsByTagName('title')[1].childNodes[0].nodeValue;
} catch (e) {
// ignore exception
}
console.log("storage: ")
}
});
this.fireEvent("playButtonTapped", storageDataItem);
this.fireEvent("playAudioFile", title, mediaContentURL);
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked May 8, 2013 at 1:39
1 Answer 1
\$\begingroup\$
\$\endgroup\$
From looking a little into this
- You derive
mediaContentURL
throughresponse.responseXML
andtitle
throughxml
, I would stick in both cases toxml
- As you guessed, your approach to getting the mediaContentURL is pretty terrible.
- Use
getElementsByTagName
andattributes
, do not hardcode array indexes - Do not use
console.log
in production code
I would use something like this:
function getItemTitle( xml , itemNumber )
{
//Skip the title number of the playlist
return xml.getElementsByTagName('title')[itemNumber+1].textContent
}
function getItemURL( xml , itemNumber )
{
return xml.getElementsByTagName('content')[itemNumber].attributes.getNamedItem('url').value;
}
answered Apr 1, 2014 at 1:34
lang-xml