使用jQuery解析xml时command节点解析失败

时间:2023-03-09 22:13:25
使用jQuery解析xml时command节点解析失败

jQuery版本1.8.3

待解析的xml为:

<message><user><command>Login</command></message>

跟踪jQuery源码,发现如下:

// Go to html and back, then peel off extra wrappers
tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
wrap = wrapMap[ tag ] || wrapMap._default;
depth = wrap[0];
div.innerHTML = wrap[1] + elem + wrap[2];

自己写测试例子:

var div = document.createElement("div");
div.innerHTML = "<message><user>\
<command>Login</command>\
</message>";
div.childNodes[0].childNodes[0].childNodes[0].outerHTML;
//"<command></command>"

这里输出的时候就是空节点了,实际的xml被转换为:

<message><user><command></command>Login</user></message>

这不是jQuery的问题,我的Chrome版本为 32.0.1700.107 m,后发现command是HTML5新增标签。

继续探索问cschool的例子:

<command type="command">Click Me!</command>

在chrome developer tools里面显示为:

使用jQuery解析xml时command节点解析失败

编辑时为:

<menu>
<command type="command"></command>Click Me!
</menu>

使用jQuery解析xml时command节点解析失败

至此应该得知,这是Chrome给我们的惊喜了!

总结几点:
1、使用jQuery解析xml不靠谱;
2、一些html使用的标签解析异常,比方说command;
3、在IE(比如IE 9.0.8112.16421)里标签会自动大写;
4、and so on