2012-05-14 2 views
1

Я пытаюсь загрузить и проанализировать локальный файл XML через Node.js, размещенный в IIS. Я использовал fs readFile, чтобы прочитать строку и модуль xmldom, чтобы разобрать его. Работает до тех пор, пока размер файла не будет небольшим (несколько килобайт), но если я попытаюсь загрузить 3Mb xml, это не сработает.Загрузка xml-файлов через node.js в windows

Какой еще модуль xml для окон мог бы работать лучше?

Это мой код

var fs = require('fs'); 
fs.readFile('C:\\Temp\\TEST.xml', 'ascii', function(err,data){ 
    if(err) { 
     console.log("Could not open file"+ err); 
     process.exit(1); 
    } 
    var Dom = require('xmldom').DOMParser; 
    var doc = new Dom().parseFromString(data.substring(2,data.lenght)); 
    console.log(doc.childNodes[0].localName); 
}); 

Через 5 мин XML-анализатор продолжает работать, в то время как на более простом примере это работает. я сохранил выход из msinfo32 в формате XML вывода

Через 10 минут это RangeError: Максимальный размер стека вызовов превысил

выход генерируется из "msinfo32/Nfo C: \ TEMP \ TEST.NFO"

+0

«Это не удастся» не будет. Как он терпит неудачу? Вы уверены, что это действительный документ? – reinierpost

ответ

0

Просто убедитесь, что XML-документ действителен здесь:

http://www.w3schools.com/xml/xml_validator.asp

Если и это не суметь я предлагаю открыть вопрос об их GitHub странице

Вы можете искать другие модули на npm

Я лично использовал xml2js без проблем

+0

xml-файл действителен, но требуется слишком много времени для генерации ... Я не знаю, является ли причина сбоя просто таймаутом iis, но мне нужно что-то быстрее. Для использования xml2json требуется expat, который недоступен для окон, если вы не скомпилируете его. Есть ли модуль для работы с потоками xml? будет быстрее? – fab

+0

Тайм-аут IIS кажется маловероятным, сколько времени занимает? (Надеюсь, это займет не более 30 секунд;)). Во всяком случае, возможно, вы застряли в xmldom, потому что большинство других парсеров узлов используют libxml2, и вы должны использовать его через cygwin на окнах. Не отличная идея. Просто убедитесь, что сам анализатор не работает, а не другой/ваш код и открыть проблему, вызывает ли это какое-либо исключение? можете ли вы определить тайм-аут в IIS? – BFil

+0

это мой код var fs = require ('fs'); fs.readFile ('C: \\ Temp \\ TEST.xml', 'ascii', function (err, data) { if (err) { \t console.log ("Не удалось открыть файл" + ошибка) ; \t process.exit (1);} вар Дом = требуется ('XMLDOM') DomParser;.. вар док = новый Дом() parseFromString (data.substring (2, data.lenght)); console.log (doc.childNodes [0] .localName); \t }); через 5 минут xml анализатор все еще работает, а на более простом примере он работает.Я сохранил вывод из msinfo32 в xml-формате – fab

0

msinfo32 выходов в «ucs2», неправильное кодирование вызвало вопрос. Анализатор Xmldom отлично работает, даже если для анализа всего файла требуется несколько минут.

Я использовал xml-splitter для извлечения XML-ветви, чтобы быть разобраны

-1

Я вижу, что вы написали длину, а не длину ... Может быть, это проблема!

+2

Это должен быть комментарий (проверяющий его обрезание и погрешность пасты), а не как ответ, поскольку он не обеспечивает решение проблемы OP. –

Смежные вопросы