Показать сообщение отдельно
  #1 (permalink)  
Старый 09.04.2014, 14:42
Новичок на форуме
Отправить личное сообщение для Blacksmouker Посмотреть профиль Найти все сообщения от Blacksmouker
 
Регистрация: 08.04.2014
Сообщений: 5

Метод 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>
Ответить с цитированием