Javascript 我想要XML元素中的原始区分大小写标记名。
以下代码返回标记名的大写文本。我要原案Javascript 我想要XML元素中的原始区分大小写标记名。,javascript,jquery,xml,Javascript,Jquery,Xml,以下代码返回标记名的大写文本。我要原案 var xml = '<myElements type="AA" coID="A923"><myHouse>01</myHouse> <myCars>02</myCars><myWifeAndDog>03</myWifeAndDog></myElements>'; $(xml).children().each(function () { var 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
我该怎么做?
已解决:按照Mike的建议使用DOM。但不确定是否所有浏览器都支持此功能
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);
当您在
HTML
标记上使用.tagName
时,它将始终以大写形式返回标记名,而当您在XML
节点上使用.tagName
时,则保留大小写
这是参考资料
他们说,在opera中,大小写保留在HTML标记上,您可以尝试…当您在
HTML
标记上使用.tagName
时,它将始终以大写形式返回您的标记名,就像您在XML
节点上使用.tagName
时,大小写被保留一样
这是参考资料
他们说,在opera中,案例保存在HTML标记上,您可以尝试一下…可能您不应该使用jQuery来实现这一点,而应该使用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);
var parser=new DOMParser(),
xmlStr='1',
dom=parser.parseFromString(xmlStr,“text/xml”);
console.log(dom.firstChild.tagName);
这对于Firefox和Chrome来说是可以的。
IE有另一种读取和加载XML的方法,但最终类似。可能你不应该使用jQuery,而应该使用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);
var parser=new DOMParser(),
xmlStr='1',
dom=parser.parseFromString(xmlStr,“text/xml”);
console.log(dom.firstChild.tagName);
这对于Firefox和Chrome来说是可以的。
IE有另一种读取和加载XML的方法,但最终类似。在将XML传递给$()
函数之前,请尝试使用
var $xml = $.parseXML(xml);
$('myElements > *', $xml).each(function(){
var xmlnode = $(this);
console.log(this.tagName+" - "+xmlnode.text());
});
演示:在将xml传递给$()
函数之前,请尝试使用
var $xml = $.parseXML(xml);
$('myElements > *', $xml).each(function(){
var xmlnode = $(this);
console.log(this.tagName+" - "+xmlnode.text());
});
演示:你肯定不能。不过,你可以做的一件事是创建一个displayName属性并使用
this.getAttribute(“displayName”)
@Joseph:我想你是对的。你肯定不能。但是你可以做的一件事是创建一个displayName属性并使用this.getAttribute(“displayName”)
@Joseph:我想你是对的。我看到了引用。。。我在XML节点上使用它,它不保留大小写。。。那么正确的语法应该是什么呢?似乎jquery没有将xml
字符串视为xml
我看到了引用。。。我在XML节点上使用它,它不保留大小写。。。那么正确的语法是什么呢?jquery似乎没有将xml
字符串视为xml