2012-03-28 86 views
1

我正在使用一個數據庫,每個組有X和Y個點,它用於繪製圖像輪廓。用jQuery解析XML文本

現在在我的網頁側這段代碼是我用它來獲得積分:

var Drawing = $(XML).find('DrawingXML'); 

alert($(Drawing[1]).text()); 

結果:

<DrawingPoints> 
    <Point><X>1</X><Y>2</Y></Point> 
    <Point><X>2</X><Y>4</Y></Point> 
    <Point><X>3</X><Y>5</Y></Point> 
    <Point><X>2</X><Y>2</Y></Point> 
    <Point><X>0</X><Y>4</Y></Point> 
</DrawingPoints> 

使用.replace()調用只改變一個項目,以便它可用於這樣的事情:

.replace("</DrawingPoints>",""); 

但如果我想要替換所有'點'標籤我運氣不好。

我的目標是使用畫布功能繪製點出來,所以我希望它被解析如下:

ctx.beginPath(); 
ctx.moveTo(1,2); 
ctx.lineTo(2,4); 
ctx.lineTo(3,5); 
ctx.lineTo(2,2); 
ctx.lineTo(0,4); 
ctx.stroke(); 

我不會用IE瀏覽器只是Safari /鉻使用,如果這有幫助。

回答

0

獲取所有的X和Y值一次:

var points = {}; 
points.X = Array(); 
points.Y = Array(); 
var ix = 0; 

$(XML).find('DrawingXML DrawingPoints Point X').each(function() 
{ 
    points.X[ix++] = $(this).text(); 
}); 
$(XML).find('DrawingXML DrawingPoints Point Y').each(function() 
{ 
    points.Y[ix++] = $(this).text(); 
});

這可能不是很準確,我沒有測試它,我的JavaScript是有點生疏,但你的想法。

+0

感謝您的幫助,但問題是找到作品「DrawingXML」,但DrawingPoints>點>ÿ所有這些「XML」項目被保存在文本他們不是真的XML如果是有道理的...如果有一種方式通過jQuery將文本轉換爲XML然後做到這一點......那太棒了。 – c9four 2012-03-28 16:12:55

+0

如果您將該字符串加載到jquery中,您將擁有要搜索並循環的對象。 – rcdmk 2012-03-28 16:27:25

+0

alert($(points).text());仍輸出空白:/ – c9four 2012-03-28 16:40:02

0

在這種情況下,您可能會通過使用庫而不是編寫自己的代碼來節省大量的開銷。

我想d3做你所需要的:

+0

這似乎很有趣,如果我沒有解決方案,我可以使用它。這只是我對編程的一般新認識,而且看着一個新的圖書館遠遠超過了我的頭。 – c9four 2012-03-28 16:24:29

+0

我認爲圖書館是最好的學習方式 - 你可以看到如何設計一個解決問題的方法,並檢查源的具體實現細節。 – RobinGower 2012-03-29 15:22:40