我正在尝试使用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输出完全是小写)请帮助。
答案 0 :(得分:6)
根据http://www.w3.org/TR/CSS21/selector.html,在HTML中 元素名称不区分大小写,但在XML中它们是大小写的 - 敏感。属性名称也是如此。
因此,您获得的HTML输出是正确的。据我所知, jQuery核心无法创建HTML文档,其中区分大小写对元素和属性名称很重要。
编辑:见下文。我原先说jQuery不能创建一个案例敏感性很重要的XML文档。显然,它可以。但是,如果你注入HTML,它就无法保留。有关解决方案,请参阅:jQuery converting XML tags to uppercase
答案 1 :(得分:1)
问题是.html()... html本身应该是小写的,所以jquery jsut返回“有效”的html格式。如果你需要解析xml我肯定会有librairy这样做,这将保留你的Xml案例。
我个人会尝试使用快速搜索找到parsexml或任何你能找到的库
答案 2 :(得分:0)
我的问题是我从其他网站提取的XML将实际的XML数据输出为编码的HTML ... IE:
<status>
<eventData>
<net id="District 3" name="District 3">
<updateTimestamp>2014-04-16T22:15:42-05:00</updateTimestamp>
<category>Current</category>
</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
,它就会将该文本转换为一个没有丢失camelCasing的有效XML文档。