Javascript JSXML解析:值未更改
我正在用Javascript解析XML。我的XML如下所示: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
<?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++;
}
}