Добрый день!
Есть 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>