all!我遇到了一些使用Javascript访问XML节点属性的问题。Javascript XML DOM Trickiness
类似下面的特别外观的XML节点:
<List DocTemplateUrl="" DefaultViewUrl="/Lists/Announcements/AllItems.aspx" MobileDefaultViewUrl="" ID="{blahblahblahblah}" ... />
本身没有“数据”节点包含在其标签内;它所包含的所有数据都是List标签的实际修饰符。
Javascript的XML DOM参考提供了关于如何访问节点标签修饰符的信息; DOM引用中的所有方法和属性都指向子节点以及如何访问节点的内容。这当然是有道理的,因为XML应该是格式良好而且美观的,但是那些知道XML片段来自哪里的人已经在笑,因为这个可怕的直觉XML直接从Microsoft SharePoint的Web Services API输出。 :)
无论如何,这是除了点。如果有人知道如何使用Javascript的XML DOM访问XML节点的属性,我真的很感谢一些帮助。 :D
编辑:问题可能有所不同。我的意思是属性,而不是属性;这帮助了一大堆。但是,它仍然告诉我所有的XML DOM节点属性和方法都是未定义的;我认为我用来访问方法的实际引用是未定义的。下面是我用它来生成它的代码:
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find('List').each (
function()
{
var id = $(this).attributes.getNamedItem("ID").value;
alert(id);
});
其中“XML”所包含的List代码段的上方,并且是从SharePoint Web服务输出XML直。
我假设这段代码找到了所有类型为'List'的节点并遍历它们;这是不正确的?
编辑:找到解决方案。显然,当你使用JQuery封装一个JavaScript XML DOM节点时,$(this)不会给你DOM元素,而是给你一个包含DOM元素的JQuery对象。有两种方法,给定我使用上面的代码:
var id = $(this).attr('ID'); //这是让您访问封装的XML节点内的属性的JQuery方法--attr()不是标准Javascript XML DOM的一部分,因为$(this)不是XML DOM元素。
var id = $(this).get(0).attributes.getNamedItem(“ID”)。value; //这是Javascript的方式。在这里,我们调用get(0)从JQuery的封装对象中返回实际的XML DOM节点;之后,我们可以调用任何我们想要的Javascript XML DOM方法。我使用这种方法是因为我知道Javascript XML DOM,并且我倾向于在GUI生成之外尽可能少地使用JQuery。
希望能帮助任何人遇到类似的问题。 :)
(呵呵,和属性VS性能好消息:。d)
您,先生,是一位绅士和学者。我对这个问题所做的编辑还有第三种解决方案。我应该认为它是与JQuery相关的。 :) 谢谢你的帮助! – sichinumi 2011-05-24 20:42:45