2016-07-22 88 views
0

我正在向发送XML格式的API发送请求并发送ajax请求。使用以下代码将responseXml数据打印出来,但我不知道如何解析它并访问数据(如item.line或item.origTime)。js从xml获取数据response.text()

我应该用某种方法使用JSON解析器吗?

class App extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { schedules: [] }; 

    fetch('http://api.bart.gov/api/sched.aspx?cmd=stnsched&key=' + API_KEY + '&orig=12th&date=today') 
     .then((response) => response.text()) 
     .then((responseXML) => { 
     this.setState({schedules: responseXML}); 
     console.log(responseXML); 
     }) 
     .catch((error) => { 
     console.log(error); 
     }); 
    } 

    render() { 
    return (
     <div> 
     <SelectList /> 
     <TimeTable schedules={this.state.schedules} /> 
     </div> 
    ) 
    } 
} 

XML响应

<root> 
    <uri>...</uri> 
    <date>7/22/2016</date> 
    <sched_num>39</sched_num> 
    <station> 
    <name>12th St. Oakland City Center</name> 
    <abbr>12TH</abbr> 
    <item line="ROUTE 7" trainHeadStation="MLBR" origTime="4:36 AM" destTime="5:21 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 2" trainHeadStation="PITT" origTime="4:37 AM" destTime="5:17 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 3" trainHeadStation="RICH" origTime="4:37 AM" destTime="5:00 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 1" trainHeadStation="SFIA" origTime="4:43 AM" destTime="5:28 AM" trainIdx="1" bikeflag="1"/> 
    ...... 
+0

jxon是你所需要的。 https://github.com/tyrasd/jxon –

+0

江,你能写一个代码示例吗? –

回答

1

这里是代码〔实施例,检查控制台输出: https://jsfiddle.net/5rddp7tx/

const xmlStr=` 
<root> 
    <uri>...</uri> 
    <date>7/22/2016</date> 
    <sched_num>39</sched_num> 
    <station> 
    <name>12th St. Oakland City Center</name> 
    <abbr>12TH</abbr> 
    <item line="ROUTE 7" trainHeadStation="MLBR" origTime="4:36 AM" destTime="5:21 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 2" trainHeadStation="PITT" origTime="4:37 AM" destTime="5:17 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 3" trainHeadStation="RICH" origTime="4:37 AM" destTime="5:00 AM" trainIdx="1" bikeflag="1"/> 
    <item line="ROUTE 1" trainHeadStation="SFIA" origTime="4:43 AM" destTime="5:28 AM" trainIdx="1" bikeflag="1"/> 
    </station> 
</root> 
` 
var myObject = JXON.build(JXON.stringToXml(xmlStr)); 
console.log(myObject); 
console.log(myObject.root.station.item[2].$line);