2011-07-29 34 views
1

以下代碼返回tagName的UpperCase文本。我想要原來的情況。我想要XML元素中的原始大小寫敏感標記名稱。

var xml = '<myElements type="AA" coID="A923"><myHouse>01</myHouse> <myCars>02</myCars><myWifeAndDog>03</myWifeAndDog></myElements>'; 

$(xml).children().each(function() { 
    var xmlnode = $(this); 
    console.log(this.tagName + " - " + xmlnode.text()); 
}); 

返回:

MYHOUSE - 01 
MYCARS - 02 
MYWIFEANDDOG - 03 

我想它返回:

myHouse - 01 
myCars- 02 
myWifeAndDog- 03 

我怎樣才能做到這一點?

求助:使用DOM,如Mike建議。不知道這是否被所有瀏覽器支持。

var xmlDoc; 
if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(data.xmltext, "text/xml"); 
} 
else // Internet Explorer 
{ 
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async = "false"; 
    xmlDoc.loadXML(data.xmltext); 
} 
console.log(xmlDoc); 
console.log(xmlDoc.firstChild.children[0].tagName); 
+0

敢肯定你不能。你可以做的一件事是做一個displayName屬性並使用'this.getAttribute(「displayname」)' –

+0

@Joseph:我認爲你是對的。 – capdragon

回答

2

可能是你不應該使用jQuery的tha t並使用DOM:

var parser = new DOMParser(), 
    xmlStr = '<myElements type="A" coID="A92"><myHouse>1</myHouse></myElements>', 
    dom = parser.parseFromString(xmlStr, "text/xml"); 
    console.log(dom.firstChild.tagName); 

這適用於Firefox,Chrome。 IE瀏覽器有另一種讀取和加載XML的方式,但最後類似。

0

當你在一個HTML標籤使用.tagName後總是回到你在哪裏,當您在XML節點上使用.tagName的情況下被保留

這裏大寫的標記名是參考http://reference.sitepoint.com/javascript/Element/tagName

他們說,在歌劇案件保存在HTML標籤,你可以試試它...

+0

我看到了參考文獻...我在XML節點上使用它,它不保留大小寫......那麼正確的語法是什麼? – capdragon

+0

似乎jquery不會將'xml'字符串視爲'XML' – Rafay

3

在將xml傳遞給$()函數之前,請嘗試使用$.parseXML

var $xml = $.parseXML(xml); 

$('myElements > *', $xml).each(function(){ 
    var xmlnode = $(this); 
    console.log(this.tagName+" - "+xmlnode.text()); 
}); 

演示:http://jsfiddle.net/97a7T/