JS XML解析:值不变

JS XML Parsing: Value Not Changing

本文关键字:XML 解析 JS      更新时间:2023-09-26

我正在用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时,我看到的只是一遍又一遍地重复的"Channel 1"。那条文字永远不会改变。有什么想法吗?

编辑:我的selectSingleNode通话现在有没有可能"令人耳目一新"(因为没有更好的术语)?

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