2016-12-08 2 views
0

私はnodeJsの初心者ですが、私はすでにそれを愛しています。 次のdata.xmlファイルがあります。nodejsの2つのエンドポイントで定義されたファイルの一部を読み取る

<data> 
<student> 
    <age>16</age> 
    <name>Bill</name> 
</student> 
<teacher> 
    <age>33</age> 
    <name>Priyanka</name> 
</teacher> 
</data> 

私はこのファイルから、学生の詳細を読みたいです。 私はfs.readStream、fs.readFileを調べましたが、それを正しく理解できない人もいました。 Readlineは解決策かもしれませんが(私にはわかりませんが)、XMLがうまくフォーマットされていないとどうなりますか?

ありがとうございます。

答えて

1

無効なxmlを解析できないため、修正してください。そして、あなたはノードモジュール(npm install xml2jsを実行してインストール)と、このコードxml2js使用することができます:あなたは、XMLを修正しない場合、コードはもちろんの例外がスローされます

var fs= require('fs'); 
var parseString = require('xml2js').parseString; 

fs.readFile('./data.xml', 'utf8', function read(err, data) { 
    if (err) { 
     throw err; 
    } 

    parseString(data, {trim: true}, function (err, result) { 
     if (err){ 
      throw err; 
     } 
     console.dir(result); 
    }); 
}); 

(教師の年齢のタグを閉じることは無効です) 。 xfファイルのエンコーディングを確認する必要があります。簡潔にするために、私はutf8を想定していました。

+0

ありがとう@RLaaa。本当にそれを感謝します。データがjsonファイルの場合のオプションは何ですか? – rookie

+2

jsonは簡単ですが、もちろんxml解析モジュールを使用しないで、おそらくjsonをオブジェクトに解析する必要があります。 parseString呼び出しをvar obj = JSON.parse(data)で置き換えます。 jsonが無効な場合、解析は実行をスローすることができます。こちらをご覧ください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse – RLaaa

関連する問題