Hướng dẫn nodejs read xml file - nodejs đọc tệp xml

51

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang học cách sử dụng nút. Tại thời điểm này, tôi có một tệp XML trông như thế này:

sitemap.xml




  
    http://www.example.com
    2015-10-01
    monthly
  

  
    http://www.example.com/about
    2015-10-01
    never
  

  
    http://www.example.com/articles/tips-and-tricks
    2015-10-01
    never
    Tips and Tricks
    Learn some of the tips-and-tricks of the trade
  

Tôi đang cố gắng tải XML này trong ứng dụng nút của mình. Khi được tải, tôi chỉ muốn nhận được các yếu tố

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
6 bao gồm việc sử dụng các yếu tố
var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
7. Lúc này, tôi bị mắc kẹt mặc dù. Ngay bây giờ, tôi đang sử dụng XML2js thông qua các mục sau:

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});

Khi câu lệnh

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
8 được thực thi, tôi chỉ thấy một loạt các số trong cửa sổ bảng điều khiển. Một cái gì đó như thế này:

{"type":"Buffer","data":[60,63,120, ...]}

Tôi còn thiếu gì?

Hỏi ngày 30 tháng 9 năm 2015 lúc 18:19Sep 30, 2015 at 18:19

user70192user70192user70192

13.3K48 Huy hiệu vàng157 Huy hiệu bạc234 Huy hiệu đồng48 gold badges157 silver badges234 bronze badges

1

Sử dụng XML2JSON

https://www.npmjs.com/package/xml2json

fs = require('fs');
var parser = require('xml2json');

fs.readFile( './data.xml', function(err, data) {
    var json = parser.toJson(data);
    console.log("to json ->", json);
 });

Đã trả lời ngày 2 tháng 2 năm 2017 lúc 6:44Feb 2, 2017 at 6:44

Hướng dẫn nodejs read xml file - nodejs đọc tệp xml

4

Từ các tài liệu.

Cuộc gọi lại được truyền hai đối số (ERR, dữ liệu), trong đó dữ liệu là nội dung của tệp.

Nếu không có mã hóa được chỉ định, thì bộ đệm thô được trả về.

Nếu các tùy chọn là một chuỗi, thì nó chỉ định mã hóa. Thí dụ:

fs.readFile('/etc/passwd', 'utf8', callback);

Bạn đã không chỉ định mã hóa, vì vậy bạn nhận được bộ đệm thô.

Đã trả lời ngày 30 tháng 9 năm 2015 lúc 18:23Sep 30, 2015 at 18:23

QuentinentinQuentin

879K121 Huy hiệu vàng1178 Huy hiệu bạc1289 Huy hiệu đồng121 gold badges1178 silver badges1289 bronze badges

@Sandburg đã đề cập

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 trong một bình luận và nó hoạt động tốt nhất cho tôi (vài năm sau khi câu hỏi này được hỏi). Những cái khác tôi đã thử là:
{"type":"Buffer","data":[60,63,120, ...]}
0 yêu cầu một số SDK Windows mà tôi không muốn đối phó và
{"type":"Buffer","data":[60,63,120, ...]}
1 không cung cấp một cách OTB đủ dễ dàng để tìm kiếm thông qua các thuộc tính.

Tôi đã phải rút ra một thuộc tính cụ thể trong một tệp 3 nút XML và

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 đã làm điều đó một cách dễ dàng.

https://www.npmjs.com/package/xml-js

Với tệp ví dụ sau

{"type":"Buffer","data":[60,63,120, ...]}
3


  
    
    
    
    
  

Tôi đã sử dụng

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 để tìm phần tử
{"type":"Buffer","data":[60,63,120, ...]}
5 với thuộc tính
{"type":"Buffer","data":[60,63,120, ...]}
6 như vậy

const convert = require('xml-js');
const fs = require('fs');

// read file
const xmlFile = fs.readFileSync('stats.xml', 'utf8');

// parse xml file as a json object
const jsonData = JSON.parse(convert.xml2json(xmlFile, {compact: true, spaces: 2}));

const targetNode = 

    // element '/stats/runs/latest'
    jsonData.stats.runs.latest

    .find(x => 

        // attribute '@date'
        x._attributes.date === '2019-12-12'
    );

// targetNode has the 'latest' node we want
// now output the 'fail' attribute from that node
console.log(targetNode._attributes.fail);  // outputs: 2

Đã trả lời ngày 12 tháng 12 năm 2019 lúc 22:08Dec 12, 2019 at 22:08

FS.ReadFile có tham số thứ hai tùy chọn: Mã hóa. Nếu bạn không bao gồm tham số này, nó sẽ tự động trả lại cho bạn một đối tượng bộ đệm.

https://nodejs.org/api/fs.html#fs_fs_readfile_filename_options_callback

Nếu bạn biết mã hóa chỉ cần sử dụng:

fs.readFile(__dirname + '/../public/sitemap.xml', 'utf8', function(err, data) {
    if (!err) {
        console.log(data);
    }
});

Đã trả lời ngày 30 tháng 9 năm 2015 lúc 18:23Sep 30, 2015 at 18:23

QuentinentinNate

879K121 Huy hiệu vàng1178 Huy hiệu bạc1289 Huy hiệu đồng1 gold badge3 silver badges12 bronze badges

3

@Sandburg đã đề cập

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 trong một bình luận và nó hoạt động tốt nhất cho tôi (vài năm sau khi câu hỏi này được hỏi). Những cái khác tôi đã thử là:
{"type":"Buffer","data":[60,63,120, ...]}
0 yêu cầu một số SDK Windows mà tôi không muốn đối phó và
{"type":"Buffer","data":[60,63,120, ...]}
1 không cung cấp một cách OTB đủ dễ dàng để tìm kiếm thông qua các thuộc tính.

const xml2js = require('xml2js');
const fs = require('fs');
const parser = new xml2js.Parser({ attrkey: "ATTR" });

// this example reads the file synchronously
// you can read it asynchronously also
let xml_string = fs.readFileSync("data.xml", "utf8");

 parser.parseString(xml_string, function(error, result) {
   if(error === null) {
      console.log(result);
  }
  else {
    console.log(error);
  }

Tôi đã phải rút ra một thuộc tính cụ thể trong một tệp 3 nút XML và

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 đã làm điều đó một cách dễ dàng.

Với tệp ví dụ sau

{"type":"Buffer","data":[60,63,120, ...]}
3Aug 10, 2020 at 11:38

Hướng dẫn nodejs read xml file - nodejs đọc tệp xml

Tôi đã sử dụng

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
9 để tìm phần tử
{"type":"Buffer","data":[60,63,120, ...]}
5 với thuộc tính
{"type":"Buffer","data":[60,63,120, ...]}
6 như vậyReaper

Đã trả lời ngày 12 tháng 12 năm 2019 lúc 22:082 silver badges12 bronze badges

FS.ReadFile có tham số thứ hai tùy chọn: Mã hóa. Nếu bạn không bao gồm tham số này, nó sẽ tự động trả lại cho bạn một đối tượng bộ đệm.

  app.get('/api/rss/', (_request: Request, response: Response) => {
    const rssFile = fs.readFileSync(__dirname + '/rssFeeds/guardian.xml', { encoding: 'utf8' })

    console.log('FILE', rssFile)

    response.set('Content-Type', 'text/xml')
    response.send(rssFile)
  })
  • Nếu bạn biết mã hóa chỉ cần sử dụng:
  • Natenate
  • 5331 Huy hiệu vàng3 Huy hiệu bạc12 Huy hiệu đồng
  • Bước 1 NPM Cài đặt XML2JS -Save

});Feb 21, 2021 at 22:22

Hướng dẫn nodejs read xml file - nodejs đọc tệp xml

Đã trả lời ngày 10 tháng 8 năm 2020 lúc 11:38mewc

Reaperreaper12 silver badges21 bronze badges

3522 Huy hiệu bạc12 Huy hiệu Đồng

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
0

Đối với một máy chủ tốc hành:

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
1

Nhận yêu cầu

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
2

Đọc tài liệuJun 5, 2018 at 4:22

Đặt tiêu đề XMLAtul Kr Dey

Trả về tệp1 silver badge12 bronze badges

Đã trả lời ngày 21 tháng 2 năm 2021 lúc 22:22

mewcmewc

1.05312 huy hiệu bạc21 Huy hiệu đồng

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
4

Bạn có thể thử cái nàyAug 8, 2017 at 17:18

Ở phía khách hàng:-Daphoque

về phía máy chủ:-1 gold badge18 silver badges28 bronze badges

Đã trả lời ngày 5 tháng 6 năm 2018 lúc 4:22

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
5

Atul kr deyatul kr deyFeb 17, 2016 at 14:56

Hướng dẫn nodejs read xml file - nodejs đọc tệp xml

1

1511 Huy hiệu bạc12 Huy hiệu đồng

Bạn cũng có thể sử dụng Regex trước khi phân tích cú pháp để loại bỏ các phần tử không khớp với điều kiện của bạn:

{"type":"Buffer","data":[60,63,120, ...]}
9

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/../public/sitemap.xml', function(err, data) {
    if (!err) {
        console.log(JSON.stringify(data));
    }
});
3

Thí dụ :Jan 18, 2017 at 23:24

Đã trả lời ngày 8 tháng 8 năm 2017 lúc 17:18KuN

Daphoquedaphoque17 silver badges23 bronze badges