我正在尝试从一些XML数据中获取通道显示名称和通道ID,但似乎无法使其正常工作。对于每个频道显示名称,我要尝试获取频道显示名称和频道ID,这就是我尝试过的方法,它可以获取数据,但是将它们全部放入一个字符串中,我希望它们位于单独的行中。
sizeForItem
答案 0 :(得分:1)
XPATH和XSL / XSLT可以做到这一点,但是与javascript / JSON相比,它们可能很难学习/使用。首选JavaScript对象表示法JSON。看看
XPath Examples来自微软
Introduction to using XPath in JavaScript来自MDN。
迭代器示例
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 ); }
答案 1 :(得分:0)
在遍历$xml
时,您需要使用$(this)
或传递给.each()
的第二个参数,以便在遍历时访问各个通道。请参见下面的代码:
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('channel').each(function (i,e) {
$('#title').append($(this).find("display-name"));
$('#title').append($('<br />'));
$('#channelid').append($(this).attr("id"));
$('#channelid').append($('<br />'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Titles: <br />
<div id="title"></div><br />
Channel IDs: <br />
<div id="channelid"></div>
答案 2 :(得分:0)
您没有使用find方法的结果。我相信你需要像
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("channel").each(function(index, e) {
$('#title').append($(e).find("display-name").text() + '<br />');
$('#channelid').append(e.getAttribute("id") + '<br />');
});
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<div id="title"></div>
<div id="channelid"></div>