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