我正在使用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>
忽略奇怪的结构(不受我控制)。我正在运行这个JS代码:
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++;
}
}
当我查看调试器中的内容时,事情似乎很好。我可以看到cfg
变量发生变化,我可以看到它的第一个子元素是<label>
元素,其值也在变化。问题是,当我查看HTML时,我看到的只是“频道1”一遍又一遍地重复。该文本永远不会改变。有什么想法吗?
编辑:我的selectSingleNode
来电有任何机会现在'令人耳目一新'(缺少更好的学期)?
答案 0 :(得分:1)
查看XPath教程并从同事那里获得一些帮助可以得到答案。我需要将搜索字符串设为.//Label
。这将选择我当前的通道节点,然后查找标签节点。之前,它只是在整个文档中搜索第一个标签节点,这就是事情没有改变的原因。