Ik ben bezig met XMLHTTPRequest, en gebruik daarbij XML als dataformat.
Voorbeeld van mijn XML:
Het irriteert mij dat ik een enorm lange constructie als xml.getElementsByTagName('action')[0].firstChild.nodeValue moet gebruiken om een simpele waarde te krijgen. Ik heb gekeken hoe dat korter kon, en ben toen hierop gekomen.
Met mijn xmlValue kan ik dan het veel kortere xml.xmlValue('action') doen, en heb ik ook nog eens de mogelijkheid om xmlValue later te kunnen uitbreiden met bijv het strippen van whitespace, om het returnen van whitespace nodes te voorkomen.
Helaas werkt het nu alleen in Firefox. Ik dacht dat deze manier werd ondersteund door alle moderne browsers. Wat doe ik verkeerd?
Voorbeeld van mijn XML:
XML:
1
2
3
4
5
6
7
8
| <?xml version="1.0" encoding="utf-8"?> <login> <message>Het wachtwoord is niet correct.</message> <field>password</field> <action>retry</action> <newticket>c2Ntc2-12NHVw2t/e9TfAAYc0OE</newticket> <triesleft>U heeft nog 5 loginpogingen over.</triesleft> </login> |
Het irriteert mij dat ik een enorm lange constructie als xml.getElementsByTagName('action')[0].firstChild.nodeValue moet gebruiken om een simpele waarde te krijgen. Ik heb gekeken hoe dat korter kon, en ben toen hierop gekomen.
JavaScript:
1
2
3
4
5
6
7
8
| Object.prototype.xmlValue = function(element, index) { if (!index) index = 0; if (this.getElementsByTagName(element).length) { return this.getElementsByTagName(element)[index].firstChild.nodeValue; } else { return false; } } |
Met mijn xmlValue kan ik dan het veel kortere xml.xmlValue('action') doen, en heb ik ook nog eens de mogelijkheid om xmlValue later te kunnen uitbreiden met bijv het strippen van whitespace, om het returnen van whitespace nodes te voorkomen.
Helaas werkt het nu alleen in Firefox. Ik dacht dat deze manier werd ondersteund door alle moderne browsers. Wat doe ik verkeerd?