jquery - 能否使用 jQuery 的 $(responseXML) 语法可靠地解析 XML?

标签 jquery xml parsing

我目前正在寻找一种使用 JavaScript 从服务器 XML 响应中提取信息的简便方法。 jQuery 似乎是一个很好的选择。

在使用 jQuery 解析 XML 时,我经常遇到类似于以下代码片段的代码示例:

function parseXml(responseXml) {

    $(responseXml).find('someSelector')...

}

然而,jQuery Core 文档(下面的引文)明确指出您不应该这样做:

jQuery( html, [ ownerDocument ] )

html A string of HTML to create on the fly. Note that this parses HTML, not XML.

http://api.jquery.com/jQuery/#jQuery2

这让我想知道为什么这么多在线资源仍然建议通过 $(responseXml) 解析 XML。尽管 API 文档怎么说,这通常可以正常工作吗?在什么情况下像这样解析 XML 实际上不起作用

最佳答案

我不知道我的经验是否可以推广,但我在使用 jQuery 解析 SOAP 消息时遇到过一些问题。这可能不归结为 jQuery(正如您指出的文档不推荐它)。

无论如何,您询问了细节:我发现所有带有 namespace 的东西都有问题。当然,对于真正的命名空间感知,您需要能够将命名空间前缀解析为命名空间 URI 的东西。我从没想过 jQuery 能够做到这一点,但即使只匹配前缀也不适合我。这对我来说尤其成问题,因为我处理的 SOAP 消息很容易混合 4 或 5 个 namespace 。所以我回去自己做 DOM 遍历来解决这个问题(它有自己的一系列问题)

也就是说,我确实希望 jQuery 能够处理 xhtml 文档(只要标签名称没有前缀),并且我希望它也适用于其他不使用 namespace 前缀的 xml 文档。

关于jquery - 能否使用 jQuery 的 $(responseXML) 语法可靠地解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124924/

相关文章:

jquery - 在 jQuery 中获取 x、y 像素的颜色

.net XSLT 创建工作表

c++ - Boost Spirit可以用来解析字节流数据吗?

javascript - Bootstrap隐藏下拉菜单时出现的白色背景如何去掉?

javascript - 如何将动态路由传递给 Rails 中的 AJAX POST 请求

php - 我无法使用 AJAX (XMLHttpRequest) 获取 responseXML

java - 解析 JSON 抛出异常

c++ - 使用 boost::spirit 解析 double 列表

javascript - 如何从 JSON 数组创建列表?

c# - 将 LINQ XML 与命名空间一起使用