javascript xml getElementsByTagName 其中 tag 是一个数字

javascript xml getElementsByTagName where tag is a number

本文关键字:一个 数字 xml getElementsByTagName 其中 tag javascript      更新时间:2023-09-26

我的JavaScript代码中有一段已经运行良好了一段时间,可以从传入的xml通信中获取值,但它突然停止报告某些标签找到的任何元素。 我做了一些查找,似乎只有数字标签才会受到此影响,一旦我切换回字母,一切正常。 有什么原因为什么我不能只使用数字吗?

Javascript 代码:

xmlhttp.onreadystatechange=function()
{
    xmlDoc=xmlhttp.responseXML;
    x=xmlDoc.getElementsByTaName("VAR");
    alert(x.length); // <- reports 0 when numbers are used as tags
    var dataBack = [];
    for (j=0;j<x.length;j++) {
        dataBack[j] = x[0].getElementsByTagName(x[j])[0].childNodes[0].nodeValue);
    }
    useXMLdata(dataBack);
 }

我尝试在我的数字标签中添加一个字母,它神奇地开始工作。 我用它来实际捕获标签,但我很好奇为什么我不能只使用数字。

只是数字的元素(例如 <8>Some content</8> ) 似乎不是有效的 XML。

XML 规范非常粗糙,但第 3.1 节定义了开始标记命名。 开始标记名称必须以NameStartChar字符开头,然后继续使用任意数量的NameChar字符。

NameStartChar似乎是NameChar的一个子集,其中不包括数字 0-9 等。 因此,有效的标记名称不能以数字开头。

我怀疑您的 XML 是否会验证它是否包含 XML 元素,例如 <8>Something</8> . 我不知道这是否是你的JavaScript失败的原因,但这足以说明不以这种方式构建你的XML。

编辑

尝试将以下 XML 插入验证程序:

<?xml version="1.0" ?> 
<Root>
  <Child>
    <1xyz>Content</1xyz>
  </Child>
</Root>

这将给出错误 <1xyz> 标记的元素名称无效。 即使SO也不喜欢它,因此缺乏语法突出显示!