2011-04-26 28 views
7

我想使用jQuery進行XML處理。我被jQuery困住的問題之一是在處理標籤和屬性時不區分大小寫。選擇器中的大小寫不敏感?

對於例如,考慮下面的代碼:

$("<div><Book ISBN='1234'>Some title</Book></div>").html() 

我們得到的輸出是:

<book isbn="1234">Some title</book> 

,而我期待的輸出爲:

<Book ISBN="1234">Some title</Book> 

任何可能性? (請注意,「B」是大寫字母,整個屬性名稱「ISBN」也是大寫,而jQuery html輸出完全是小寫)請幫助。

+2

你爲什麼需要保存病例?您在解析/遍歷XML時遇到問題嗎? '$ XML。find('Book')'和'$ xml.find('book')'在jQuery中是相同的,'$ xml.attr('ISBN')'和'$ xml.attr('isbn')'是一樣的。 – 2011-04-26 14:39:13

+0

正是我在此刻嘗試...... .html按預期工作降低案件,但.find正在處理任何案件。因此可以用來查找書,但也會返回書。 ! – 2011-04-26 14:45:24

+0

SO問題/答案不鼓勵問候和簽名。乾杯 – 2011-05-02 17:41:20

回答

6

http://www.w3.org/TR/CSS21/selector.html發現,不區分大小寫,但在XML中,他們是大小寫 - 敏感。屬性名稱也是如此。

所以,你得到的HTML輸出是正確的。據我所知, jQuery核心無法創建HTML文檔,其中區分大小寫對於元素和屬性名稱很重要。

編輯:見下文。我原來說jQuery不能在大小寫敏感的問題上創建一個XML文檔。顯然,它可以。但是如果你注入HTML,它不能保存案例。有關解決方案,請參閱:jQuery converting XML tags to uppercase

+0

*「據我所知,jQuery核心無法創建XML文檔」*當然可以:http://api.jquery.com/jQuery.parseXML/ :-) – 2011-11-18 16:15:18

+0

@ T.J.克勞德。我從來沒有說過它不能創建一個XML文檔。我說jQuery不能創建一個XML文檔,其中區分大小寫對於元素和屬性名稱很重要。你讀過這個問題了嗎? – 2011-11-18 20:31:29

+1

'@two:'我大多是在開玩笑地談論過度泛化,但是:再說一遍:當然可以:http://jsbin.com/ibixey請注意'test'和'TEST'元素是如何**不是**一樣。 @ Lil'Monkey是正確的,它更多的是關於'html'方法,而不是關於jQuery正確使用XML的能力。 – 2011-11-18 23:01:54

1

問題是.html()... html本身應該是小寫的,所以jquery jsut返回「Valid」html格式。如果你需要解析XML我相信他們的圖書館這樣做會保持你的Xml的案例。

個人而言,我會嘗試在HTML 元素名稱庫的parsexml或任何你可以用快速搜索

http://api.jquery.com/jQuery.parseXML/

0

我的問題是我是從其他網站輸出拉動實際的XML數據編碼的HTML的XML ... IE:

<status> 
    <eventData> 
     &lt;net id="District 3" name="District 3"&gt; 
     &lt;updateTimestamp&gt;2014-04-16T22:15:42-05:00&lt;/updateTimestamp&gt; 
     &lt;category&gt;Current&lt;/category&gt; 
    </eventData> 
</status> 

因此,我不得不在如何它無法控制當時正在輸出,並且最初我只是通過AJAX使用的基本jQuery來獲取XML,然後用返回的數據

$.get(eventDataURL, {}, function (rawXML) { 
    var xml = $(rawXML).text(); 
} 

如果我用$(rawxml).text();它使人們有可能去通過每一個,問題就來了我喂的時候該數據爲$(xml).find('event').filter(function(){ ....

一旦它經歷了.find.filter所有的cameCasing都丟失了,並且對於依賴駱駝套裝的東西提出了很多問題。

所以簡單的修復是與其他人一樣上面提到的:

$.get(eventDataURL, {}, function (rawXML) { 
    var xmlText = $(rawXML).text(); 
    xml = $.parseXML(xmlText); 
} 

只需使用$.parseXML它轉換文本到沒有失去駝峯規則有效的XML文檔。