2011-05-20 83 views
1

我想從xml文件中只選擇itemno和quantity數量較少的兩個項目。任何人都可以幫助我如何在javascript中執行此操作。從javascript中的xml文件中選擇數據

items.xml:

<?xml version="1.0"?> 
<items> 
    <item> 
     <itemno>1</itemno> 
     <unitprice>99</unitprice> 
     <Quantity>10</Quantity> 
    </item> 
    <item> 
     <itemno>2</itemno> 
     <unitprice>80</unitprice> 
     <Quantity>10</Quantity> 
    </item> 
    <item> 
     <itemno>3</itemno> 
     <unitprice>120</unitprice> 
     <Quantity>10</Quantity> 
    </item> 
</items> 

的javascript:

var xmlDoc=new ActiveXObject("MSXML.DOMDocument"); 
xmlDoc.async="false"; 
xmlDoc.load("items.xml"); 
var items=xmlDoc.documentElement; 
var item = itemss.childNodes(0); 
+1

對不起,我今天感覺區分大小寫。 – LarsH 2011-05-20 22:26:55

+0

dupe of http://stackoverflow.com/questions/4200913/xml-to-javascript-object – 2011-05-20 22:44:45

+0

@Adam Bergmark我在這個例子中沒有使用JSON – bina 2011-05-20 22:46:12

回答

1

所有的基本DOM方法也可用於XML工作:

http://www.quirksmode.org/dom/w3c_core.html
https://developer.mozilla.org/en/DOM/document
https://developer.mozilla.org/en/DOM/element

可以使用

items = xmlDoc.getElementsByTagName('item'); 

對於每個項目找到的所有項目,一個孩子是成本節點:

priceNode = item.childNodes[1]; 

(或者你可以去通過的childNodes,尋找一個與nodeName等於「UNITPRICE」)

尋找該節點的內容是棘手的,因爲IE和FF支持不同的方法:

priceStr = priceStr.textContent || priceNode.innerText; 

最後,將字符串轉換成一個數字:

price = parseInt(priceStr, 10); 

順便說一句,你的建設與使用ActiveX的XML文檔的方法是IE特定的。你一定要考慮使用某種Javascript庫(比如Jquery或者Dojo)來平滑這個和其他的東西。