Метод 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, время: 00:16. |