Метод XML.load() для файлового массива
Добрый день!
Есть zip-архив. Архив содержит массив файлов xml. Файлы маленькие от 3 до 30 кб каждый, но их много - от десятка, до сотни за раз (точное количество заранее неизвестно). Каждый имеет наименование 7-ми значный цифровой код. Необходимо подтянуть данные из этих XML и выгрузить таблицей в HTML. Напрашивался парсер на php, но сервер клиента не поддерживает php - там все реализовано на .NET От Xml в данном случае тоже не уйти - данные приходят именно в этом формате. Т.е. остается отработать массив на месте без обращения к серверу. Через Javascript. Часть с разархивированием массива пока пропустил, поэтому принял за данность что массив уже распакован (хотя может проще сначала его грузить и там разбирать). Нашел метод load, который единственный умеет работать с файлами локально. Один файл он у меня прогружает нормально. Затык происходит, если попытаться загрузить несколько файлов. Вместо четкого имени я завожу регулярное выражение, а результат отработки функции пытаюсь вызвать в цикле, чтобы он вывел обработанные файлики в табличку. Знатоки подсказали, что регулярными выражениями решить проблему не получится. Возможно кто-то сталкивался с подобными задачами - и подскажет решение. Заранее благодарен. <html> <head> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> function loadXMLDoc(dname) { try { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try {xmlDoc xmlDoc.async=false; xmlDoc.load(dname); return(xmlDoc); } catch(e) {alert(e.message)} return(null); } var file_name = /\d{7}.xml/g; xmlDoc=loadXMLDoc(file_name); document.write('<table class="warning" border="2px" bgcolor="silver">'); document.write('<tr align="center" bgcolor="gray">'); document.write('<td>Дата события</td>'); document.write('<td>Полное наименование</td>'); document.write('<td>Заголовок</td>'); document.write('</tr>'); for (i=0; i<xmlDoc.length; i++){ document.write('<tr>'); var x=xmlDoc.getElementsByTagName("EVENT_DATE"); var y=xmlDoc.getElementsByTagName("FULL_NAME_RUS"); var z=xmlDoc.getElementsByTagName("EVENT_HEADER"); document.write('<td>' + x[i].childNodes[0].nodeValue + '</td>'); document.write('<td>' + y[i].childNodes[0].nodeValue + '</td>'); document.write('<td>' + z[i].childNodes[0].nodeValue + '</td>'); document.write('<tr>'); } document.write('</table>'); </script> </body> </html> |
Цитата:
Цитата:
Решение для веб приложения вменяемых только два. 1е самое нормальное решить проблему на сервере используя .net. 2е разобрать zip на стороне клиента использую какую нибудь либу для работы с zip файлами. К примеру https://github.com/Stuk/jszip Кстатии IIS должен PHP поддерживать. |
Часовой пояс GMT +3, время: 03:38. |