gpt4 book ai didi

javascript - 让 XML 显示在 HTML 中

转载 作者:行者123 更新时间:2023-11-30 17:25:51 25 4
gpt4 key购买 nike

我一直在搞乱一些在线脚本来解析 XML 以将其显示在表格中。不幸的是,与我周围看到的例子不同,我的例子没有显示表格。

<html>
<head>
</head>
<body>
<script>

if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("GET","europe.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

document.write("<table border='1'>");

var x = xmlDoc.getElementsByTagName("country");

for (i = 0; i < x.length; i++) {
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("users")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}

document.write("</table>");
</script>
</body>
</html>

这是europe.xml

<?xml version="1.0" ?>
<continent name="Europe">
<country>
<name>Albania</name>
<users>1.6 Million</users>
</country>
<country>
<name>Austria</name>
<users>6.7 Million</users>
</country>
<country>
<name>Belgium</name>
<users>8.6 Million</users>
</country>
</continent>

最佳答案

最好在字符串中生成表格,然后使用 DOM 将生成的 HTML 附加到现有元素。

1) 在您希望放置表格的 HTML 中添加一个容器:

<html><body>
...
<div id="container"></div>
...
</body></html>

2) 加载 XML 文件:

var client;
if (window.XMLHttpRequest) {
client = new XMLHttpRequest();
}
else {
client = new ActiveXObject("Microsoft.XMLHTTP");
}
client.open('GET', 'europe.xml');

3) 读取文件内容。这应该在 Ajax 回调函数内 完成,以确保在处理开始之前读取文件。通常你会测试响应代码等。这是一个例子:

client.onreadystatechange = function() { // will run when the file loads
// get the response XML
var xmlDoc = client.responseXML;

// get the list of countries
var countries = xmlDoc.getElementsByTagName("country");

... // the rest of the code (see below)
}

client.send(); // this will send the request which will be captured by the function above

4) 获取<country>的列表元素(在上面的代码中):

var countries = xmlDoc.getElementsByTagName("country");

5) 获取容器div添加表格的位置:

var container = document.getElementById("container");

6) 在字符串中创建一个 HTML 表格,并将元素数据放入其中:

var tableString = "<table border='1'>"; // Make a table and put the element data inside it
for (i = 0; i < countries.length; i++) {
tableString += "<tr><td>";
tableString += countries[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
tableString +="</td><td>";
tableString += countries[i].getElementsByTagName("users")[0].childNodes[0].nodeValue;
tableString += "</td></tr>";
}
tableString += "</table>";

7) 将表追加到容器中:

container.innerHTML = tableString;

此示例使用纯 JavaScript。您可能还想尝试使用 JQuery 的解决方案这可能会将上面的代码行减少一半左右。

参见 http://jsfiddle.net/helderdarocha/N2nER/举个例子(我在 fiddle 中使用了嵌入式 XML 而不是 Ajax,以避免加载外部文件)

更新:这是整个 HTML 页面,以防您在组装各个部分时遇到问题:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
<script>

var client;
if (window.XMLHttpRequest) {
client = new XMLHttpRequest();
}
else {
client = new ActiveXObject("Microsoft.XMLHTTP");
}
client.open('GET', 'europe.xml');

client.onreadystatechange = function() { // will run when the file loads
// get the response XML
var xmlDoc = client.responseXML;

// get the list of countries
var countries = xmlDoc.getElementsByTagName("country");

// get the container where you want to embed the table
var container = document.getElementById("container");

var tableString = "<table border='1'>"; // Make a table and put the element data inside it
for (i = 0; i < countries.length; i++) {
tableString += "<tr><td>";
tableString += countries[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
tableString +="</td><td>";
tableString += countries[i].getElementsByTagName("users")[0].childNodes[0].nodeValue;
tableString += "</td></tr>";
}
tableString += "</table>";

// append the table to the container
container.innerHTML = tableString;
}

client.send();

</script>
</head>
<body>
<h1></h1>
<div id="container"></div>
</body>
</html>

关于javascript - 让 XML 显示在 HTML 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com