JS XML解析:价值不变

时间:2011-05-31 16:27:32

标签: 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>
    <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来电有任何机会现在'令人耳目一新'(缺少更好的学期)?

1 个答案:

答案 0 :(得分:1)

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