XML文档的getElementById,Mozilla扩展

Sha*_*rad 3 javascript xml xpcom firefox-addon xml-parsing

在Mozilla中使用DOMParser方法从XML字符串解析DOM上是否支持document.getElementById方法?我正在创建一个mozilla扩展,它读取xmlfile并使用DOM Parser将xml转换为DOM元素,并尝试通过Id获取元素.方法getElementsByTagName有效,但不是getElementById.它总是返回null.

function (xmlString) {
    var parser = new DOMParser();
    var doc = parser.parseFromString(xmlString, "text/xml"); 
    var aNodes = doc.getElementsByTagName("nodeTag");
    for(var i=0; i<aNodes.length; ++i) {
        var id = aNodes[i].getAttribute('id');
        var resultNode = doc.getElementById(id);
        alert(id);
        alert(resultNode);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码.alert(id)返回正确的id,其中alert(resultNode)每次都返回null.

Tim*_*own 8

不,document.getElementById通常不会处理任意XML文档.

在最近的浏览器(例如Firefox 3.5及更高版本)中,您可以使用document.querySelector:

var resultNode = doc.querySelector("[id=" + id + "]");
Run Code Online (Sandbox Code Playgroud)

  • 从w3 DOM-Level-2-Core文档中提取,"注意:DOM实现必须包含哪些属性属于ID类型的信息.名称为"ID"的属性不是类型ID,除非这样定义.知道属性是否属于ID类型,预计会返回null." 所以这就是它没有按预期运行的原因. (2认同)