Cargar XML desde un servidor externo

Iniciado por Gangatravel, 31 Julio 2015, 00:10 AM

0 Miembros y 1 Visitante están viendo este tema.

Gangatravel

Hola, me descarge unos ejemplos de prueba para cargar un XML desde otro servidor diferente al mio pero cuando cambio la ruta del XML no me funciona, los archivos que tengo son estos:

HTML:

Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Cross XML Sample</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<script src="xml2json.js"></script>
<script src="jquery.xdomainajax.js"></script>
<script>
// For This example, im going to use sample xml from o'reily for practice
// located at url http://examples.oreilly.com/9780596002527/examples/first.xml
// We are going to extract character name nodes for this sample  
function xmlLoader(){
$.ajax({
   url: 'http://examples.oreilly.com/9780596002527/examples/first.xml',
   dataType: "xml",
   type: 'GET',
   success: function(res) {
var myXML = res.responseText;
// This is the part xml2Json comes in.
var JSONConvertedXML = $.xml2json(myXML);
$('#myXMLList').empty();
for(var i = 0; i < JSONConvertedXML.book.character.length; i++){
$('#myXMLList').append('<li><a href="#">'+JSONConvertedXML.book.character[i].name+'</a></li>')
}
$('#myXMLList').listview('refresh');
$.mobile.hidePageLoadingMsg();
   }
});
}

$( document ).delegate("#home", "pageshow", function() {
$.mobile.showPageLoadingMsg();
  xmlLoader();
});
</script>
</head>

<body>
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview" data-theme="c" id="myXMLList">
</ul>
</div>
</div>
</body>
</html>


JS:

Código (javascript) [Seleccionar]
jQuery.ajax = (function(_ajax){
   
   var protocol = location.protocol,
       hostname = location.hostname,
       exRegex = RegExp(protocol + '//' + hostname),
       YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
       query = 'select * from xml where url="{URL}"';
   
   function isExternal(url) {
       return !exRegex.test(url) && /:\/\//.test(url);
   }
   
   return function(o) {
       
       var url = o.url;
       
       if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
           
           // Manipulate options so that JSONP-x request is made to YQL
           
           o.url = YQL;
           o.dataType = 'json';
           
           o.data = {
               q: query.replace(
                   '{URL}',
                   url + (o.data ?
                       (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
                   : '')
               ),
               format: 'xml'
           };
           
           // Since it's a JSONP request
           // complete === success
           if (!o.success && o.complete) {
               o.success = o.complete;
               delete o.complete;
           }
           
           o.success = (function(_success){
               return function(data) {
                   
                   if (_success) {
                       // Fake XHR callback.
                       _success.call(this, {
                           responseText: (data.results[0] || '')
                               // YQL screws with <script>s
                               // Get rid of them
                               .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
                       }, 'success');
                   }
                   
               };
           })(o.success);
           
       }
       
       return _ajax.apply(this, arguments);
       
   };
   
})(jQuery.ajax);


JS (2):

Código (javascript) [Seleccionar]
;if(window.jQuery) (function($){

// Add function to jQuery namespace
$.extend({
 
 // converts xml documents and xml text to json object
 xml2json: function(xml, extended) {
  if(!xml) return {}; // quick fail
 
  //### PARSER LIBRARY
  // Core function
  function parseXML(node, simple){
   if(!node) return null;
   var txt = '', obj = null, att = null;
   var nt = node.nodeType, nn = jsVar(node.localName || node.nodeName);
   var nv = node.text || node.nodeValue || '';
   /*DBG*/ //if(window.console) console.log(['x2j',nn,nt,nv.length+' bytes']);
   if(node.childNodes){
    if(node.childNodes.length>0){
     /*DBG*/ //if(window.console) console.log(['x2j',nn,'CHILDREN',node.childNodes]);
     $.each(node.childNodes, function(n,cn){
      var cnt = cn.nodeType, cnn = jsVar(cn.localName || cn.nodeName);
      var cnv = cn.text || cn.nodeValue || '';
      /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>a',cnn,cnt,cnv]);
      if(cnt == 8){
       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>b',cnn,'COMMENT (ignore)']);
       return; // ignore comment node
      }
      else if(cnt == 3 || cnt == 4 || !cnn){
       // ignore white-space in between tags
       if(cnv.match(/^\s+$/)){
        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>c',cnn,'WHITE-SPACE (ignore)']);
        return;
       };
       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>d',cnn,'TEXT']);
       txt += cnv.replace(/^\s+/,'').replace(/\s+$/,'');
// make sure we ditch trailing spaces from markup
      }
      else{
       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>e',cnn,'OBJECT']);
       obj = obj || {};
       if(obj[cnn]){
        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>f',cnn,'ARRAY']);
       
// http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
if(!obj[cnn].length) obj[cnn] = myArr(obj[cnn]);
obj[cnn] = myArr(obj[cnn]);
       
obj[cnn][ obj[cnn].length ] = parseXML(cn, true/* simple */);
        obj[cnn].length = obj[cnn].length;
       }
       else{
        /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>g',cnn,'dig deeper...']);
        obj[cnn] = parseXML(cn);
       };
      };
     });
    };//node.childNodes.length>0
   };//node.childNodes
   if(node.attributes){
    if(node.attributes.length>0){
     /*DBG*/ //if(window.console) console.log(['x2j',nn,'ATTRIBUTES',node.attributes])
     att = {}; obj = obj || {};
     $.each(node.attributes, function(a,at){
      var atn = jsVar(at.name), atv = at.value;
      att[atn] = atv;
      if(obj[atn]){
       /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'ARRAY']);
       
// http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
//if(!obj[atn].length) obj[atn] = myArr(obj[atn]);//[ obj[ atn ] ];
       obj[cnn] = myArr(obj[cnn]);

obj[atn][ obj[atn].length ] = atv;
       obj[atn].length = obj[atn].length;
      }
      else{
       /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'TEXT']);
       obj[atn] = atv;
      };
     });
     //obj['attributes'] = att;
    };//node.attributes.length>0
   };//node.attributes
   if(obj){
    obj = $.extend( (txt!='' ? new String(txt) : {}),/* {text:txt},*/ obj || {}/*, att || {}*/);
    txt = (obj.text) ? (typeof(obj.text)=='object' ? obj.text : [obj.text || '']).concat([txt]) : txt;
    if(txt) obj.text = txt;
    txt = '';
   };
   var out = obj || txt;
   //console.log([extended, simple, out]);
   if(extended){
    if(txt) out = {};//new String(out);
    txt = out.text || txt || '';
    if(txt) out.text = txt;
    if(!simple) out = myArr(out);
   };
   return out;
  };// parseXML
  // Core Function End
  // Utility functions
  var jsVar = function(s){ return String(s || '').replace(/-/g,"_"); };
 
// NEW isNum function: 01/09/2010
// Thanks to Emile Grau, GigaTecnologies S.L., www.gigatransfer.com, www.mygigamail.com
function isNum(s){
// based on utility function isNum from xml2json plugin (http://www.fyneworks.com/ - diego@fyneworks.com)
// few bugs corrected from original function :
// - syntax error : regexp.test(string) instead of string.test(reg)
// - regexp modified to accept  comma as decimal mark (latin syntax : 25,24 )
// - regexp modified to reject if no number before decimal mark  : ".7" is not accepted
// - string is "trimmed", allowing to accept space at the beginning and end of string
var regexp=/^((-)?([0-9]+)(([\.\,]{0,1})([0-9]+))?$)/
return (typeof s == "number") || regexp.test(String((s && typeof s == "string") ? jQuery.trim(s) : ''));
};
// OLD isNum function: (for reference only)
//var isNum = function(s){ return (typeof s == "number") || String((s && typeof s == "string") ? s : '').test(/^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/); };

  var myArr = function(o){
   
// http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
//if(!o.length) o = [ o ]; o.length=o.length;
   if(!$.isArray(o)) o = [ o ]; o.length=o.length;

// here is where you can attach additional functionality, such as searching and sorting...
   return o;
  };
  // Utility functions End
  //### PARSER LIBRARY END
 
  // Convert plain text to xml
  if(typeof xml=='string') xml = $.text2xml(xml);
 
  // Quick fail if not xml (or if this is a node)
  if(!xml.nodeType) return;
  if(xml.nodeType == 3 || xml.nodeType == 4) return xml.nodeValue;
 
  // Find xml root node
  var root = (xml.nodeType == 9) ? xml.documentElement : xml;
 
  // Convert xml to json
  var out = parseXML(root, true /* simple */);
 
  // Clean-up memory
  xml = null; root = null;
 
  // Send output
  return out;
 },
 
 // Convert text to XML DOM
 text2xml: function(str) {
  // NOTE: I'd like to use jQuery for this, but jQuery makes all tags uppercase
  //return $(xml)[0];
  var out;
  try{
   var xml = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
   xml.async = false;
  }catch(e){ throw new Error("XML Parser could not be instantiated") };
  try{
   if($.browser.msie) out = (xml.loadXML(str))?xml:false;
   else out = xml.parseFromString(str, "text/xml");
  }catch(e){ throw new Error("Error parsing XML string") };
  return out;
 }

}); // extend $

})(jQuery);


Alguien sabe que he de cambiar para que cuando cambie la ruta del XML que hay en el codigo html por la del XML que quiero utilizar funcione?


Mod: Los códigos deben ir en etiquetas GeSHi