Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSXML解析:值未更改_Javascript_Xml - Fatal编程技术网

Javascript JSXML解析:值未更改

Javascript JSXML解析:值未更改,javascript,xml,Javascript,Xml,我正在用Javascript解析XML。我的XML如下所示: <?ml version="1.0" encoding="UTF-8"> <IPC_XML> <dfr> <dfr> <data> <analog> <channel index="0"> <label>Channel 1</label> </channel> <chan

我正在用Javascript解析XML。我的XML如下所示:

<?ml version="1.0" encoding="UTF-8">
<IPC_XML>
<dfr>
<dfr>
<data>
<analog>
    <channel index="0">
        <label>Channel 1</label>
    </channel>
    <channel index="1">
        <label>Channel 2</label>
    </channel>
</analog>
</data>
</dfr>
</dfr>
</IPC_XML>
当我查看调试器中的内容时,情况似乎很好。我可以看到
cfg
变量的变化,我可以看到它的第一个子元素是
元素,它的值也在变化。问题是,当我看HTML时,我看到的只是“通道1”一次又一次地重复。这段文字永远不会改变。有什么想法吗


EDIT:我的
selectSingleNode
调用现在是否“刷新”(因为没有更好的术语)?

查看XPath教程并从同事那里获得一些帮助,就找到了答案。我需要搜索字符串为
//Label
。这将选择我的当前通道节点,然后查找标签节点。以前,它只是在整个文档中搜索第一个标签节点,这就是事情没有改变的原因。

查看XPath教程并从同事那里获得一些帮助,从而找到了答案。我需要搜索字符串为
//Label
。这将选择我的当前通道节点,然后查找标签节点。以前,它只是在整个文档中搜索第一个标签节点,这就是事情没有改变的原因。

我要尝试的第一件事是将//标签更改为/标签-但我无法测试,所以我不确定这是否是一个答案…使用“/标签”,我得到了一个没有文本属性的空对象的异常。我要尝试的第一件事是将//label更改为/label-但我无法测试,所以我不确定这是否是一个答案…使用“/label”,我得到了一个没有文本属性的空对象的异常。这是我最初的猜测(它将指向根)-但我估计是这样的“cfg.selectSingleNode”将隐式包含“.”。这有点奇怪…这是我最初的猜测(它将指向根)-但我认为“cfg.selectSingleNode”将隐式包含“.”。这有点奇怪。。。
function updateAnalogCfgValues (xmlDoc) {
var analogCfgs = xmlDoc.selectNodes ("//channel");
var cfg = analogCfgs.nextNode ();
var cnt = 1;

while (cfg !== null) {
    var node = document.getElementById ("aChan"+cnt);
    var tmp = document.createElement ("b");
    tmp.innerText = cfg.selectSingleNode ("//label").text;
    node.appendChild (tmp);

    cfg = analogCfgs.nextNode (); cnt++;
}
}