xml2jsで解析されたjsonのアイテムをループするときにxml属性にアクセスできません

ztrat4dkyle

xml2jsを使用してxmlがjsonに解析された後、xmlrssフィード内のアイテムの属性にアクセスしようとしています私がアクセスできる個々の属性を使用してitems[0].el.$.attributeただし、各アイテムをループすると、より深く進むことはできませんel(を使用してitems.map(item => { item.el.$ })ループ内をさらに深くしようとすると、elが未定義になっているというエラーが発生します...

TypeError: Cannot read property '$' of undefined

これが[デモ]と私のコードです(╭ರ_•́)

const express = require('express');
const { parseString } = require('xml2js');
const axios = require('axios');

const app = express();

app.use(express.static('public'));

app.get('/', async (req, res) => {

  const rss = 'https://www.kijiji.ca/rss-srp-rv-camper-trailer/vancouver/c172l1700287'

  axios.get(rss, { responseType: 'text'})
  .then((res) => {
    parseString(res.data, { explicitArray: false }, (err, res) => {
      const items = res.rss.channel.item;

      // THIS WORKS! (╯°o°)╯
      console.log(items[0].enclosure.$.url)

      // THIS DOES NOT WORK... ಠ_ಠ
      items.map(item => {
        console.log(item.enclosure.$.url);
      })

      // THIS WORKS! (╯°o°)╯
      items.map(item => {
        console.log(item.enclosure);
      })

    })
  })
})

// listen for requests :)
const listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + listener.address().port);
});

上記の例では、xml2jsを使用してkijijiでこのRSSフィードを解析しています。解析後、を使用して要素属性にアクセスできますjson.rss.channel.item[0].enclosure.$.url

ただし、(forループ、forEachまたはを使用して)アイテムをループすると、mapより深くなることはできませんjson.rss.channel.item[0].enclosure

ここで何が欠けていますか?

ジャケミンゴ

例をローカルで実行すると、アイテムにプロパティtitle: '1999 safari GMC van with wheelchair lift'がないことがわかりenclosureます。これはJavaScriptというよりもデータの問題だと思います。これを説明するためにこれをより防御的にプログラミングする以外は。

これは、次のXMLの検査で確認できます。

curl https://www.kijiji.ca/rss-srp-rv-camper-trailer/vancouver/c172l1700287 | grep -C 10 "1999 safari GMC van with wheelchair lift"
....
    <item>
      <title>1999 safari GMC van with wheelchair lift</title>
      <link>https://www.kijiji.ca/v-travel-trailer-camper/vancouver/1999-safari-gmc-van-with-wheelchair-lift/1430028981</link>
      <description>GMC van with lift for handycap</description>
      <pubDate>Fri, 26 Apr 2019 23:33:07 GMT</pubDate>
      <guid>https://www.kijiji.ca/v-travel-trailer-camper/vancouver/1999-safari-gmc-van-with-wheelchair-lift/1430028981</guid>
      <dc:date>2019-04-26T23:33:07Z</dc:date>
      <geo:lat>49.2819588</geo:lat>
      <geo:long>-123.09482930000001</geo:long>
    </item>
...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

IO例外(XML)-別のプロセスによって使用されているため、プロセスはファイルにアクセスできません

エラー:設定されたアクセサーにアクセスできないため、プロパティまたはインデクサー「CharacterStats.currentHealth」をこのコンテキストで使用することはできません

XMLノードの@属性にアクセスできません

パッケージ化されたときに利用できるようにMavenプロジェクトのXMLファイルにアクセスする方法

Djangoテンプレートのクイルフォームフィールドに保存されたテキストにアクセスできません

Angular 6のxml2js:「ストリーム」と「タイマー」を解決できません

非同期でファイルを保存するのを待つと、「別のプロセスで使用されているため、プロセスはファイルにアクセスできません」というエラーが発生します

netbeansは、デプロイ時にコンテキストxmlファイルをtempフォルダーからtomeeのローカルホストにコピーできません。FileNotFoundException(アクセスが拒否されました)

ReportViewerを使用してPDFにエクスポートするときに別のプロセスによって使用されているため、プロセスはファイル「xxx」にアクセスできません。

ネストされたFlexboxアイテムは、スクロール可能であるときに親を埋めるために拡張されません

リアクティブフォームでFormBuilderのグループ属性にアクセスできません

Kernel32Dll.CreateFileを実装すると、「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」というエラーが表示されます。

エラー.NETCoreでCLIによってプロジェクトをビルドしているときに、別のプロセスによって使用されているため、プロセスはファイルにアクセスできません

最大化されたウィンドウを開始で開いているときに、別のプロセス エラーによって使用されているため、プロセスはファイルにアクセスできません

メモリストリームにアップロードするときに閉じたファイルにアクセスできません

ストリームを開くことができませんでした:XMLファイルを生成するfile_get_contentsのアクセスが拒否されました

JSONをWebAPI 2に投稿するときにエラーが発生しました:リクエストエンティティのメディアタイプ「text / plain」はこのリソースではサポートされていません

ファイルを保存できません:実行中のubuntuを保存するときにatomでアクセスが拒否されました

一時ディレクトリにファイルを作成するときに「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」

ansible-ネストされたリストのアイテムにアクセスできません

キーにハイフンまたは数字を含むJSONプロパティにアクセスできません-ロールアップとTypeScript

バックボーン.jsのtext.jsプラグインを使用するとテンプレートにアクセスできません

JSON アイテムにアクセスできませんでした

Apache2を起動すると、「アクセスが拒否されました:make_sock:アドレスにバインドできませんでした」というメッセージが表示されるのはなぜですか?

cxGridをループするときに、TcxEditRepositoryComboBoxItemで選択したアイテムにアクセスするにはどうすればよいですか?

別のプロセスによって使用されているため、プロセスはファイルにアクセスできません--- EFコアシリアル化XML

forループを介して作成されたアイテムにGoogleスクリプトのページ分割を追加できません

launchSettings.jsonのポートを変更すると、「このサイトにアクセスできません」と表示されます

BigQueryデータをカスタムデータ型に読み取るときに警告メッセージを回避する方法:タイプBoundedSourceのシリアル化された要素を検証できません

TOP 一覧

  1. 1

    PictureBoxで画像のブレンドを無効にする

  2. 2

    HTTPヘッダー 'SOAPAction'の値はサーバーによって認識されませんでした

  3. 3

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  4. 4

    レスポンシブウェブサイトの一番下にスティッキーなナビゲーションバーを作成するのに問題がある

  5. 5

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  6. 6

    Ansibleで複数行のシェルスクリプトを実行する方法

  7. 7

    Python / SciPyのピーク検出アルゴリズム

  8. 8

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  9. 9

    ZScalerと証明書の問題により、Dockerを使用できません

  10. 10

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  11. 11

    テキストフィールドの値に基づいて UIslider を移動します

  12. 12

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  13. 13

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  14. 14

    tf.nn_conv2dとtf.nn.depthwise_conv2dの違い

  15. 15

    CSSはアニメーションで変換および回転します

  16. 16

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  17. 17

    Chromeウェブアプリのウェブビューの高さの問題

  18. 18

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  19. 19

    amCharts 4で積み上げ棒グラフの輪郭を描く方法は?

  20. 20

    Officeアドインを使用してOutlookの連絡先のリストにプログラムでアクセスすることは可能ですか?

  21. 21

    Reactでclsxを使用する方法

ホットタグ

アーカイブ