76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYUI.add('datatype-xml-parse', function(Y) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Parse XML submodule.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module datatype
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule datatype-xml-parse
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for DataType.XML
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassvar LANG = Y.Lang;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.mix(Y.namespace("DataType.XML"), {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Converts data to type XMLDocument.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass *
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method parse
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param data {String} Data to convert.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {XMLDoc} XML Document.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass parse: function(data) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var xmlDoc = null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(LANG.isString(data)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass try {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(!LANG.isUndefined(ActiveXObject)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass xmlDoc.async = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass xmlDoc.loadXML(data);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass catch(ee) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass try {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(!LANG.isUndefined(DOMParser)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass xmlDoc = new DOMParser().parseFromString(data, "text/xml");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass catch(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
a15bb17cdc73125893c21175e7afcdd80fccde10Allen Rabinovich Y.log(ee.message + " (Could not parse data to type XML Document)", "warn", "datatype-xml");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if( (LANG.isNull(xmlDoc)) || (LANG.isNull(xmlDoc.documentElement)) || (xmlDoc.documentElement.nodeName === "parsererror") ) {
a15bb17cdc73125893c21175e7afcdd80fccde10Allen Rabinovich Y.log("Could not parse data to type XML Document", "warn", "datatype-xml");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return xmlDoc;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass});
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass// Add Parsers shortcut
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.namespace("Parsers").xml = Y.DataType.XML.parse;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}, '@VERSION@' );