Я настроил несколько файлов сценариев для репликации ваших результатов ... Судя по всему, все работает нормально.
Я создал сервер экспресс-обслуживания для обслуживания статического файла XML с символами ÅØв этом.Это всегда хорошее место, чтобы начать с этих проблем, изолировать проблему.
server.js
const express = require("express");
const app = express();
const port = 3000;
app.use('/', express.static(__dirname));
app.listen(port);
console.log('Express started on port ' + port + '...');
index.js
const xml2js = require('xml2js')
const parser = new xml2js.Parser()
const http = require('http');
var url = 'http://localhost:3000/test.xml';
http.get(url, (response) => {
var response_data = '';
// Try latin1 encoding.
response.setEncoding('latin1');
response.on('data', function (chunk) {
response_data += chunk;
});
response.on('end', function () {
parser.parseString(response_data, function (err, result) {
if (err) {
console.log('Got error: ' + err.message);
} else {
console.log('Result JSON: ', JSON.stringify(result, null, 4));
}
});
});
});
test.xml
<root>
<testÅØ id="198787">
</testÅØ>
</root>
Все файлы находятся в одном каталоге.Запустите server.js, затем index.js, загрузите тестовый XML-файл и отобразите проанализированный результат.Используя мои настройки, я получаю следующий вывод:
{
"root": {
"testÅØ": [
{
"$": {
"id": "198787"
}
}
]
}
}
Мне интересно, есть ли проблема с исходным файлом XML.Я бы попробовал использовать curl для загрузки данных и посмотреть, как выглядит файл, например,
curl urlForRequest -v> download.xml
Я бы проверил возвращающиеся заголовки, ям получаю
curl http://localhost:3000/test.xml -v > download.xml
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Thu, 07 Jun 2018 09:10:31 GMT
ETag: W/"34-163d982ff58"
Content-Type: text/xml; charset=UTF-8
Content-Length: 52
Date: Thu, 07 Jun 2018 09:52:46 GMT
Connection: keep-alive
для моей установки.