简体   繁体   English

读取 XML 内容并使用 JavaScript 放入 HTML 页面

[英]Read XML contents and put into HTML page using JavaScript

I need to read through the XML file that contains info but one at a time and display in an HTML page.我需要通读 XML 文件,该文件一次只包含一个信息,并显示在 HTML 页面中。 It needs to appear like its scrolling on its own within the HTML inside a <div> and in form of <p> .它需要在<div>内的 HTML 中以<p>的形式显示为它自己的滚动。 Can some one help me out with how to do this?有人可以帮我解决这个问题吗?

abc.xml abc.xml

<?xml version="1.0" encoding="iso-8859-1" ?>

<projects>

<project>
        <flag>1</flag>
        <name>Project 1</name>
        <descp> Short description. </descp>
        <rating> 6 </rating>
        <link> URL1 </link>
        </project>

<project>
        <flag>1</flag>
        <name>Project 2</name>
        <descp> Short description. </descp>
        <rating> 9 </rating>
        <link> URL2 </link>
        </project>

<project>
        <flag>1</flag>
        <name>Project 3</name>
        <descp> Short description. </descp>
        <rating> 4 </rating>
        <link> URL3 </link>
        </project>

<project>
        <flag>1</flag>
        <name>Project 4</name>
        <descp> Short description. </descp>
        <rating> 5 </rating>
        <link> URL4 </link>
        </project>

</projects>

JavaScript: JavaScript:

<script type="text/javascript">
window.onload = timer;

function timer() {
    var xmlDoc=new ActiveXObject("MSXML.DOMDocument");
    xmlDoc.async="false";
    xmlDoc.load("./gsss_hp.xml");
    var projects = xmlDoc.documentElement;
    var project = projects.childNodes(0);
    var numPro = projects.childNodes.length;   // to find number of projects entered in the file

    for(var i=0; i<numPro; i++){
        for(var j=0; j<100000;j++){j+=18; j-=18; for(var z=0;z<5000;z++){}}  /* do noting for nested loops */
        show(i);
    }
}

function show(num) {
    var xmlDoc=new ActiveXObject("MSXML.DOMDocument");
    xmlDoc.async="false";
    xmlDoc.load("./gsss_hp.xml");

    var projects = xmlDoc.documentElement;
    var project = projects.childNodes(num);
    var attr = project.childNodes.length;

    for(var i=0;i<attr;i++){
        var txt = xmlDoc.getElementsByTagName("project")[0].childNodes[i].nodeValue;
        txt = txt + "<br />";
        var idPos;
        if(i==1) { idPos = "name"; }
        else
        if(i==2) { idPos = "descp"; }
        else
        if(i==3) { idPos = "rating"; }
        else
        if(i==4) { idPos = "link"; }

        document.getElementById(idPos).innerHTML = txt;
    }
}

</script>

While I'll leave the actual coding to you, the general structure I would use for something like this is:虽然我将把实际的编码留给你,但我将用于这样的事情的一般结构是:

  • Start off by loading the XML.首先加载 XML。
  • When the XML is loaded, extract the data into a regular javascript array, to make it easier to handle.加载 XML 后,将数据提取到常规的 javascript 数组中,以便于处理。
  • Use setTimeout to call draw-function at a specified interval ( http://www.w3schools.com/js/js_timing.asp ) and set a (global) variable to remember which index is the last one displayed.使用 setTimeout 在指定的时间间隔( http://www.w3schools.com/js/js_timing.asp )调用绘图函数并设置一个(全局)变量来记住哪个索引是最后一个显示的索引。
  • The draw function displays the data, and increments the variable.绘图 function 显示数据,并增加变量。 If == length, reset count.如果 == 长度,则重置计数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM