2016-07-22 89 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);