2012-03-28 94 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