Show:
  1. /**
  2. * Parse XML submodule.
  3. *
  4. * @module datatype-xml
  5. * @submodule datatype-xml-parse
  6. * @for XML
  7. */
  8. Y.mix(Y.namespace("XML"), {
  9. /**
  10. * Converts data to type XMLDocument.
  11. *
  12. * @method parse
  13. * @param data {String} Data to convert.
  14. * @return {XMLDocument} XML Document.
  15. */
  16. parse: function(data) {
  17. var xmlDoc = null, win;
  18. if (typeof data === "string") {
  19. win = Y.config.win;
  20. if (win.ActiveXObject !== undefined) {
  21. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  22. xmlDoc.async = false;
  23. xmlDoc.loadXML(data);
  24. } else if (win.DOMParser !== undefined) {
  25. xmlDoc = new DOMParser().parseFromString(data, "text/xml");
  26. } else if (win.Windows !== undefined) {
  27. xmlDoc = new Windows.Data.Xml.Dom.XmlDocument();
  28. xmlDoc.loadXml(data);
  29. }
  30. }
  31. if (xmlDoc === null || xmlDoc.documentElement === null || xmlDoc.documentElement.nodeName === "parsererror") {
  32. Y.log("Could not parse data to type XML Document", "warn", "xml");
  33. }
  34. return xmlDoc;
  35. }
  36. });
  37. // Add Parsers shortcut
  38. Y.namespace("Parsers").xml = Y.XML.parse;
  39. Y.namespace("DataType");
  40. Y.DataType.XML = Y.XML;