选择器中的不区分大小写?

时间:2011-04-26 14:28:25

标签: jquery xml case

我正在尝试使用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输出完全是小写)请帮助。

3 个答案:

答案 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或任何你能找到的库

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

答案 2 :(得分:0)

我的问题是我从其他网站提取的XML将实际的XML数据输出为编码的HTML ... 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,它就会将该文本转换为一个没有丢失camelCasing的有效XML文档。