簡體   English   中英

解析xml並創建純javascript的html表(使用數據塊)

[英]parse xml and create html table pure javascript (using data block)

有人可以發現我的代碼中的問題嗎? 我想將我的xml數據解析為html表,但是它不起作用。 沒有創建表。

我的xml文件稱為購買

<?xml version="1.0">
<purchaseOrder xmlns="assoc">
  <lineItem>
    <name>Line Item 1</name>
    <price>1.25</price>
  </lineItem>
  <lineItem>
    <name>Line Item 2</name>
    <price>2.48</price>
  </lineItem>
</purchaseOrder>

和我的代碼:

<!DOCTYPE html>
<html>
<head>
<title>XML Data Block Demo</title>
<script>
function runDemo() {
  var doc = document.getElementById("purchase-order").contentDocument;
  var lineItems = doc.getElementsByTagNameNS("assoc", "lineItem");
  var firstPrice = lineItems[0].getElementsByTagNameNS("assoc", "price")[0].textContent;

  var HTML = "<table><tr><th>lineItems</th><th>firstprice</th></tr>";
  var x=doc.getElementsByTagName("lineItem");
for(i=1;i<=;i++)
{
    HTML += "<tr><td>"+x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue+"</td><td>"+x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue+"</td></tr>";
}
HTML += "</table>";
document.getElementById("output").innerHTML = HTML;


 }
</script>
</head>
<body onload="runDemo()";>
<object id="purchase-order" data="purchase.xml" type="text/xml"  style="display: none;"></object>
<div id="output">My table did not run</div>
</body>
</html>

我使用數據塊對象方法將xml解析為html,請參見此處的鏈接,其中我的上述方法已用於獲取xml數據數據島替代方案

有人知道我的代碼有什么問題嗎?

干杯

您的循環看起來很奇怪:

for(i=1;i<=;i++)

為什么從1開始? 沒有任何限制 應該是這樣的

for(i=0;i<=x.length;i++)

此外,不使用firstPrice ...

這些是您遇到的問題:

  1. xml聲明應為:

    <?xml version="1.0" ?>

  2. 您應該將對象標簽的內聯樣式設置為:

    style="visibility: hidden"

  3. 您的代碼必須在服務器上運行,以避免跨域策略。 為此,您可以使用“ http服務器”或您選擇的服務器。

  4. “ runDemo”功能的工作版本應如下所示:

 function runDemo() { var doc = document.getElementById("purchase-order").contentDocument; var lineItems = doc.getElementsByTagName("lineItem"); var html = "<table><tr><th>lineItems</th><th>firstprice</th></tr>"; for (i = 0; i < lineItems.length; i++) { html += "<tr><td>" + lineItems[i].getElementsByTagName("name")[0].childNodes[0].nodeValue + "</td><td>" + lineItems[i].getElementsByTagName("price")[0].childNodes[0].nodeValue + "</td></tr>"; } html += "</table>"; document.getElementById("output").innerHTML = html; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM