javascript xml getElementsByTagName 其中标签是一个数字

标签 javascript xml

我的 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/

相关文章:

javascript - D3。如何对选定的节点和所有父节点进行操作

javascript - 如何根据 ajax 成功创建 Stripe token 的条件

由于documents.getElementsById(),Javascript 验证不起作用

java - 将 Java w3c 文档转换为 XMLStreamReader

使用 layout_gravity ="bottom||end"xml 时 Android 资源链接失败

javascript - http回调后Angularjs $setPristine

javascript - 单个 HTML 页面上的多个计时器

xml - 即时动态构建 JavaFX UI

java - XML解析、动态结构、内容

java - 输出 JSoup,元素周围不添加空格和换行符