简体   繁体   English

在Javascript中解析XML时从父节点获取属性

[英]Get attribute from parent node when parsing XML in Javascript

I have an XML similar to this (but less fake, not to reveal the true and boring nature of my hobby projects) 我有一个与此类似的XML(但是伪造的更少,没有透露我的业余项目的真实和无聊的性质)

<day date="2017-01-01">
 <event>
    <name>Birthday party</name>
    <time>18:00</time>
 </event>
 <event>
    <name>Concert</name>
    <time>21:00</time>
 </event>
</day>

<day date="2017-01-02">
 <event>
    <name>Debate</name>
    <time>12:00</time>
 </event>
</day>

I would like the final output to be something like this: 我希望最终输出是这样的:

Birthday party      18:00   2017-01-01
Concert             21:00   2017-01-01
Debate              12:00   2017-01-02

How can I pass the date attribute down to each event, which I'm parsing like this: 我如何将date属性传递给每个事件,我按如下方式进行解析:

var x=xmlDoc.getElementsByTagName("event");
 for (i=0;i<x.length;i++) {
  document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
  document.write(x[i].getElementsByTagName("time")[0].childNodes[0].nodeValue);
  }

I know it should be possible to use getAttribute but I'm just not getting it to work properly. 我知道应该可以使用getAttribute,但我只是没有使其正常工作。

You need another for to iterate a days. 你需要另一个for遍历一个天。 Something like this: 像这样:

 var days=xmlDoc.getElementsByTagName("day"); for (i=0;i<days.length;i++) { events=xmlDoc.getElementsByTagName("event"); for (j=0;j<events.length;j++) { document.write(events[j].getElementsByTagName("name")[0].childNodes[0].nodeValue); document.write(events[j].getElementsByTagName("time")[0].childNodes[0].nodeValue); document.write(days[i].getElementsByTagName("date")[0].childNodes[0].nodeValue); } } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM