我的 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 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 也不喜欢它,因此缺乏语法突出显示!
关于javascript xml getElementsByTagName 其中标签是一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218369/