I created an XML wrapper to easily access XML data.Please tell me what do you think about it.
- Performance
- Scalability
- Anything else...
This is how you use it:
var xml = new Xml(dataString);xml.load("UserEmail");alert(xml.length + ", " + xml.getValueAt(0)); // Out: 2,[email protected]XML source file:
<Users> <Users> <UserEmail>[email protected]</UserEmail> <UserPassword> BA56E5E0366D003E98EA1C7F04ABF8FCB3753889 </UserPassword> </Users> <Users> <UserEmail>[email protected]</UserEmail> <UserPassword> 07B7F3EE06F278DB966BE960E7CBBD103DF30CA6 </UserPassword> </Users></Users>Source:
function Xml(xmlString) { var parser = function() { if (typeof window.DOMParser != "undefined") { return (new window.DOMParser()).parseFromString(xmlString, "text/xml"); } else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlString); return xmlDoc; } else { throw new Error("XML parser not found"); } }; var data = parser(xmlString); var elements = null; this.length = 0; this.load = function(nodeName){ elements = data.documentElement.getElementsByTagName(nodeName); this.length = elements.length; }; this.getValueAt = function(index) { if(!elements || index >= this.length){ return null; } var element = elements.item(index); return element.childNodes[0].data; };}- \$\begingroup\$It can usefully handle very simple XMLs. It doesn't retrieve the value of attributes. It gives worthless values for element nodes. It doesn't support a decent selector engine. If it's good for your purposes, use it.\$\endgroup\$MaxArt– MaxArt2012-06-23 12:59:06 +00:00CommentedJun 23, 2012 at 12:59
- \$\begingroup\$"Would you write your own XML Parser? Only if you're f***ing crazy."secretgeek.net/csv_trouble.asp\$\endgroup\$David East– David East2012-06-23 13:33:30 +00:00CommentedJun 23, 2012 at 13:33
- \$\begingroup\$@David pmpl nice one ;)\$\endgroup\$Babibu– Babibu2012-06-23 13:40:55 +00:00CommentedJun 23, 2012 at 13:40
1 Answer1
From a quick read :
Xmlseems like a bad name for your wrapper, you should consider something likexmlParser?I would allow access to
dataandelementsby usingthisinstead ofvarbecause you wrap so little of the XML parser APIthis.lengthseems wrong ( the parser has no length), maybeloadedElementCount, but even that is pretty bad, I would just let the caller useelements.length.I would
return elementsinthis.load, since that is pretty much what the caller would need next.You are not checking for falsey values of
nodeNameinthis.loadI would not create a
var elementin getValueAt, I would just returnelements.item(index).childNodes[0].data
You mustlog in to answer this question.
Explore related questions
See similar questions with these tags.
