2012-04-09 52 views
1

比方說,我有以下XML文檔,我需要使用jQuery解析它。使用jQuery解析XML文檔,是否有效的方法

<books> 
     <book> 
      <title>Gone with the Wind!</title> 
     </book 
     <book> 
      <title>Lord of the Rings</title> 
     </book> 
     <book> 
      <title>4 hour work week</title> 
     </book 
    </books> 

爲了獲得第一本書的「標題」。我可以使用下面的jQuery函數。

// let's assume xmldoc contains the above document. 
    $(xmldoc).find("title").first().text(); 

這會給我「標題」的第一本書,即「亂世佳人」!。現在,我的問題在於:這是獲得第一本書的「標題」的有效方法嗎?

恐怕,內部jQuery可能會解析所有書籍的標題,然後返回第一個()。我想知道,如果我在解析我不感興趣的書籍時浪費CPU週期?

如果您能想到任何問題,請提出替代方案。提前致謝!

PS:請注意,我無法使用瀏覽器的原生JavaScript API,因爲項目的其餘部分已經使用jQuery進行XML解析。

+0

我會假設jQuery會使用瀏覽器的xml解析api(如果可用)。爲什麼不檢查jQuery源代碼? – 2012-04-09 21:04:26

+0

@VincentMcNabb,謝謝。您的評論讓我着眼於jQuery源代碼。我一直認爲,我無法閱讀和理解jQuery :)。誠然,如果可用,jQuery確實使用瀏覽器的本地功能。我已經設置了一個斷點和步驟來發現jQuery調用Sizzle.find()。 Sizzle.find()反過來使用瀏覽器的getElementsByTagName()。所以,它確實獲得了整個名稱集合並以Array的形式返回。 first()調用只是返回該數組中的第一個元素。 – Karthik 2012-04-09 21:56:33

+0

不用擔心:-)順便說一句,jQuery不是由神奇的神(我曾經對很多事情感覺如此),但是由於它的大小,剛開始時需要很長的時間也是jQuery對象的構造方式。其實我覺得有點混亂。但通常情況下,一旦你認識到它太大的事實,你應該能夠搜索你所調用的函數,理解這個函數,然後看看理解那些依次調用的函數。等等。 – 2012-04-10 05:48:56

回答

4

我不能給其效率說話(爲什麼不基準呢?),但這裏是使用只是一個單一的選擇,以達到同樣效果的替代表現形式:

$("book:first-child title", xmldoc).text() 

由於@VincentMcNabb點jQuery嘗試儘可能使用瀏覽器的內置功能。

+0

謝謝。但是,雖然逐步通過我注意到,jQuery仍創建一組所有匹配的元素並返回第一個元素。所以我認爲,效率方面它可能會是一樣的。 – Karthik 2012-04-09 21:49:57