0

我的一段 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);
 }

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

4

1 回答 1

3

只有数字的元素(例如<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 也不喜欢它,因此缺少语法高亮!

于 2012-04-18T22:40:54.213 回答