我已经有一段我的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);
}
我尝试在我的数字标签上添加一个字母,它神奇地开始工作。我正在使用它来实际捕获标签,但我很好奇为什么我不能只使用数字。
答案 0 :(得分:3)
仅作为数字的元素(例如<8>Some content</8>
)似乎不是有效的XML。
XML specification非常糟糕,但section 3.1定义了开始标记命名。开始标记名称必须以NameStartChar
字符开头,然后继续使用任意数量的NameChar
个字符。
NameStartChar
似乎是NameChar
的子集,其中不包括数字0-9。因此,有效的标签名称不能以数字开头。
我怀疑你的XML是否会验证它是否包含<8>Something</8>
等XML元素。这是否是你的JavaScript失败的原因我不知道,但它的理由是不以这种方式构建你的XML。
修改强>
尝试将以下XML插入validator:
<?xml version="1.0" ?>
<Root>
<Child>
<1xyz>Content</1xyz>
</Child>
</Root>
这会为<1xyz>
标记提供错误无效的元素名称。即使是SO也不喜欢它因此缺乏语法高亮!