2013-04-06 123 views
0

我搜索了我的问题,并发现了很多有用的东西,我已经使用。保存xml文件数据在一个javascript变量

这是计划: 我想从一个XML文件加载数据到一个JavaScript变量。读取XML数据的DOMParser函数将其推入数组中,以便稍后可以从数组中获取随机元素。

要理解我想要做的事情:我想加载随机的YouTube视频。视频的链接/结尾存储在xml文件中,如“d_HvwKtsy_Q”。视频结束后,应立即启动下一个视频。我已经想出了如何在YT api中执行此操作。我只需要将xml文件加载到变量中,以便我可以在extern xml文件中对其进行编辑。

这是从来就走到这一步:

// This is my "xml file", but i want to have it in a extern file, so the variable  
stores the extern xml file data like "externXMLfile.xml" 

var xml_string ='<answers><answer id="0">o6f9wJ1DWhY</answer><answer id="1">72Y7M3_NlfI</answer></answers>' 


function get_answers_from_xml_string(xml_string) { 
// Parse the XML string into a XMLDocument 
var doc = window.DOMParser 
      ? new DOMParser().parseFromString(xml_string, 'text/xml') // Standard 
      : new ActiveXObject('Microsoft.XMLDOM').loadXML(xml_string); // IE 

// Find the answer nodes 
var answers_nodes = doc.getElementsByTagName('answer'); 
var answers = []; 

// Loop through them and save their text content into an array 
for (var i = 0; i < answers_nodes.length; i++) { 
    answers.push(answers_nodes[i].firstChild.data) 
} 

return answers; 
} 


//Save the xml elements in an array called answers 
var answers = get_answers_from_xml_string(xml_string); 

//This is the youtube api stuff, which works fine 
    // create youtube player 
    var player; 
    function onYouTubePlayerAPIReady() { 
     player = new YT.Player('player', { 
      height: '390', 
      width: '640', 
      videoId: 'd_HvwKtsy_Q', 
      events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange, 

      }, 
      playerVars: { 

        'controls': 0, 
        'showinfo': 0, 
        'iv_load_policy': 3, 
       }, 
     }); 
    } 


//this function loads a new random video id after the video stops from the array, which stores the xml elements 

function getMessage() { 
return answers[Math.floor(Math.random() * answers.length)]; 
} 

    function swapVideo() {  
player.stopVideo(); 
player.loadVideoById(getMessage()); 


} 
// autoplay video 
    function onPlayerReady(event) { 
     event.target.playVideo(); 
    } 

// when video ends 
    function onPlayerStateChange(event) {   
     if(event.data === 0) {   
      swapVideo(); 
     } 
    } 

我希望你明白我的问题,我想我想通了几乎一切,但

感谢xml_string变量与EXTERN xml文件连接你的帮助!!

回答

0

一些像这样的东西可以帮助你

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\YourXML.xml"); 
    string test = file.ReadToEnd(); 

你可以参考这个太 How can I save the this XML to a C# string variable?

+0

我明白了用意,但我想这IC#代码..所以我不知道,如果类似的东西在JS存在,甚至如何写在JS – 2013-04-06 10:51:38

+0

我不认为提问者要求提供节点解决方案? – powtac 2013-04-06 10:51:44

+0

也可以看看这个 Darshan 2013-04-06 10:53:21

0

终于想通了!感谢Darshan提供正确的链接。

https://stackoverflow.com/a/8680038/1870659

var jqxhr = $.ajax({ 
type: 'POST',  
url: "freeakshow.xml", 
dataType: 'xml', 
global: false, 
async:false, 
success: function(data) { 
    return data; 
} 
}).responseText; 


xml_string = jqxhr; 
相关问题