2017-05-15 1 views
1

Ionic with Angular 2では、jQueryを使用してXMLを解析し、要素値を取得しています。なぜXMLを解析して、要素がiOS 10.3.1で機能しないのですか?

以下は、私がgameIDを取得するために解析しているXMLです。

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ev="http://purl.org/rss/1.0/modules/event/" xmlns:s="http://sidearmsports.com/schemas/cal_rss/1.0/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
<channel> 
    <title>2017 Baseball Schedule</title><link>Original link here</link>  
    <atom:link rel="self" href="Original link here" /> 
    <description> </description> 
    <item> 
    <title> Baseball at </title> 
    <description>Baseball at …</description> 
    <link> Original link here </link> 
    <s:gameid>1234</s:gameid> 
    <s:links> 
    <s:livestats>stats go here<s:livestats> 
    </s:links> 
    </item> 
    <item> 
    <title> Baseball at </title> 
    <description> Baseball at …</description> 
    <link> Original link here </link> 
    <s:gameid>1235</s:gameid> 
    <s:links> 
    <s:livestats>State go here<s:livestats> 
    </s:links> 
    </item> 
</channel> 
</rss> 

後、私は構文解析のために使用しているコードです:私はブラウザと(10.3.1を除く)他のiOSバージョンで実行すると

this.http.get(urlToUse).subscribe((res) => { 
    var response = res.text(); 
    response = response.replace(/^(\r\n)|(\n)/g,''); 
    let parsedXML = jQuery(jQuery.parseXML(response)); 
    parsedXML.find('item').each(function() { 
    el = jQuery(this); 
    console.log("Schedule data"); 
    console.log("el"); 
    console.log(el.text()); 
    gameId = el.find('gameid'); 
    console.log("gameId"); 
    console.log(gameId); 
    console.log(gameId.text()); 
    }); 
}); 

、応答テキストは、すべての要素を示し、 GameIdコンソールは、すべてのgameIdも表示します。

10.3.1では、すべての要素を表示しますが、gameIdコンソールは空の行を表示します。

'gameid'はローカル名なので、どこでも正しい要素が選択されます。 find( 's:gameid')を見つけるためにfind( 'gameid')を置き換えようとしました。いいえ、運がない!

+0

デバッグを行いましたか?代わりに、まず「タイトル」または「リンク」を印刷してみてください。 – wannadream

+0

@wannadream、ご意見ありがとうございます。はい、他のフィールドはすべて抽出されています。 –

+0

el.text()とは何ですか?あなたは値を掲示できますか? – wannadream

答えて

0

これは、この状況で終わる人々を助けることができると思った!

上記のXMLでは、各タグにはローカル名が付いています。 iOS 10.3までは、ローカル名で参照されたときに値が取得されていました。名前空間を持たないタグで、既存のローカル名と一致するため、作業を継続しました。

解決方法:タグをel.find( 'gameid')からel.find( 'x \:gameid')までの名前空間に置き換えます。

関連する問題