2011-08-02 40 views
1

我想知道如何使用jquery將一個XML文檔的一部分提取到一個將通過XSLT進行轉換的對象?所以,讓我們說我有這個示例XML文檔:如何使用jquery轉換(xslt)提取部分XML文檔?

<nutrition> 

<daily-values> 
    <total-fat units="g">65</total-fat> 
<saturated-fat units="g">20</saturated-fat> 
<cholesterol units="mg">300</cholesterol> 
<sodium units="mg">2400</sodium> 
<carb units="g">300</carb> 
<fiber units="g">25</fiber> 
<protein units="g">50</protein> 
</daily-values> 

<food> 
<name>Avocado Dip</name> 
<mfr>Sunnydale</mfr> 
<serving units="g">29</serving> 
<calories total="110" fat="100"/> 
<total-fat>11</total-fat> 
<saturated-fat>3</saturated-fat> 
<cholesterol>5</cholesterol> 
<sodium>210</sodium> 
<carb>2</carb> 
<fiber>0</fiber> 
<protein>1</protein> 
<vitamins> 
    <a>0</a> 
    <c>0</c> 
</vitamins> 
<minerals> 
    <ca>0</ca> 
    <fe>0</fe> 
</minerals> 
</food> 

<food> 
<name>Bagels, New York Style </name> 
<mfr>Thompson</mfr> 
<serving units="g">104</serving> 
<calories total="300" fat="35"/> 
<total-fat>4</total-fat> 
<saturated-fat>1</saturated-fat> 
<cholesterol>0</cholesterol> 
<sodium>510</sodium> 
<carb>54</carb> 
<fiber>3</fiber> 
<protein>11</protein> 
<vitamins> 
    <a>0</a> 
    <c>0</c> 
</vitamins> 
<minerals> 
    <ca>8</ca> 
    <fe>20</fe> 
</minerals> 
</food> 
</nutrition> 

比方說,我只是想第一<食品> ... < /食品>塊,我希望把它保存爲一個對象或一個字符串。這怎麼可以使用jQuery來完成?一旦我提取了XML塊,我就可以正確地與XSL文檔結合進行轉換(XSLT)。非常感謝您的幫助!

UPDATE;澄清:

如果我的問題不清楚,我很抱歉。請允許我澄清我的立場。

我很清楚,可以通過使用瀏覽器的DOM以及IE和非IE實現之間的差異來操縱XML。我可以在XML對象上使用像cloneNode和selectNodes這樣的方法。事實上,我就是這麼做的。現在,如果我將jQuery帶入公式中,我想用處理它的方式替換所有這些代碼行。也就是說,可能有一個jQuery插件可以消除每個瀏覽器直接與XML DOM進行交互的需要,從而兼顧了「幕後」的交叉兼容性。我正在尋找一個js框架來爲我處理所有事情,而不是我現在處理它的方式,這是針對IE和非IE瀏覽器的獨立實現。

我希望澄清我的問題。

非常感謝您的幫助。

回答

1

做了一些研究之後,似乎連那些jQuery社區內建議XML操作由完成瀏覽器,因爲它通常更快。

2

使用jQuery.parseXML(xmlString),您可以將XML字符串轉換爲一個 jQuery對象,然後通過它執行任何操作。

OR

如果它是一個XML文件,您可以通過AJAX

得到它
$.ajax({ 
     type: "GET", 
     url: "file.xml", 
     dataType: "xml", 
     error: function(){}, 
     success: function (xml) {// you can access the parsed XML just like you do it with HTML } 
    }); 
+0

非常感謝。不幸的是,這並沒有回答這個問題。我知道有辦法使用瀏覽器的DOM操縱XML字符串/對象。我想知道如果jQuery或jQuery插件可以爲我做,而不是瀏覽器。 – user717236

+0

我的代碼不適用於瀏覽器的DOM。我用jQuery。再看一遍。 – avetarman

+0

是的,這是使用jQuery加載XML。我明白那個。但不幸的是,那不是我正在尋找的東西。我正在尋找JQuery/JQuery插件來取代使用selectNodes,cloneNode等功能的需求。在JQuery中看起來沒有辦法取得一個XML對象,並將它的選擇塊提取到一個新的XML對象中。 – user717236

2

在兼容的瀏覽器可以使用XMLSerializer文檔對象或片段轉換爲XML:

var d = document.createElement('div'); 
d.id = 'div0' 
var p = d.appendChild(document.createElement('p')); 
var xmlString = (new XMLSerializer()).serializeToString(d); 

alert(xmlString); 
// shows <div xmlns="http://www.w3.org/1999/xhtml" id="div0"><p></p></div> 

A little more work in IE,但不多。您需要創建你想要的位的XML對象,然後得到它的XML屬性:

alert(xmlObject.xml); 
+0

非常感謝。是的,我可以通過選擇節點來獲取XML片段,而無需先序列化它。我想知道的是,如果jQuery有任何具體的東西,而不是瀏覽器,它爲我做。再次感謝。 – user717236