首页 > 解决方案 > 你如何为每个 XML 数据

问题描述

我试图从一些 XML 数据中获取频道显示名称和频道 ID,但它似乎无法让它工作。对于每个频道显示名称,我要获取频道显示名称和频道 ID,这是我尝试过的,它获取数据但将它们全部放入一个字符串中,我希望它们在单独的行中。

var xml = "<tv generator-info-name='tvchannels' source-info-name='tvchannels'><channel id='1234'><display-name>Channel 1</display-name></channel><channel id='5678'><display-name>Channel 2</display-name></channel><channel id='543553'><display-name>Channel 3</display-name></channel><channel id='324324'><display-name>Channel 4</display-name></channel></tv>",

xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc );

$xml.find("display-name").each(
        function (i,e) {

$('#title').append($xml.find("display-name"));

$('#channelid').append($xml.find("channel").attr("id"));

});

标签: javascriptjqueryhtmlxml

解决方案


XPATH 和 XSL/XSLT 可以做到这一点,但是与 javascript/JSON 相比,它们可能难以学习/使用。首选 JavaScript 对象表示法 JSON。看一下

来自 Microsoft 的XPath 示例

来自 MDN的在 JavaScript 中使用 XPath 的介绍。

迭代器示例

var iterator = document.evaluate('//phoneNumber', documentNode, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );

try {
  var thisNode = iterator.iterateNext();
  
  while (thisNode) {
    alert( thisNode.textContent );
    thisNode = iterator.iterateNext();
  }   
}
catch (e) {
  alert( 'Error: Document tree modified during iteration ' + e );
}

推荐阅读