Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > парсинг xls файла


Автор: Digo 24.8.2012, 00:27
Здравствуйте,

есть файл xml из 1с он немного по другой логике построен, все идет скопом а не разбито по элементам
Код

<?xml version="1.0" encoding="UTF-8" ?> 
 <Book>
<Ucheniki>
  <Kod>000000001</Kod> 
  <ID>0015648978</ID> 
  <Flag>1</Flag> 
  <Familia>Жуков</Familia> 
  <Imia>Александр</Imia> 
  <DataRogdenia /> 
  <Kod>000000002</Kod> 
  <ID>0012156456</ID> 
  <Flag>1</Flag> 
  <Familia>Аксёнов</Familia> 
  <Imia>Александр</Imia> 
  <DataRogdenia /> 
  <Kod>000000003</Kod> 
  <ID>0016466463</ID> 
  <Flag>0</Flag> 
  <Familia>Цветков</Familia> 
  <Imia>Александр</Imia> 
</Ucheniki>
</Book>


пытаюсь работать через simplexml, использую simplexml_load_file получаю объект, как с ним наиболее оптимально работать? Нужно занести данные в базу.

пытаюсь использовать такую конструкцию, 
Код

foreach ($book->Ucheniki as $value){ 
   
    echo '-------'.$value->Kod;
    echo '-------'.$value->ID;

}

но получаю только 1 элемент, через for пробовал обходить но рчень сильно тормозит. Как с таким оптимальнее работать? заранее спасибо!)








Автор: krypt3r 24.8.2012, 06:34
Так попробуйте
Код

<?php
  $xml = simplexml_load_file ('44.xml');

  $uch = $xml->Ucheniki;
  $cnt = $uch->Kod->count ();
  for ($i = 0; $i < $cnt; $i++) {
    echo $uch->Kod[$i], "\n";
    echo $uch->ID[$i], "\n";
  }
?>

XML у вас изначально неверная. Ее бы лучше привести к виду
Код

<?xml version="1.0" encoding="UTF-8" ?> 
<Book>
<Uchenik>
  <Kod>000000001</Kod> 
  <ID>0015648978</ID> 
  <Flag>1</Flag> 
  <Familia>Жуков</Familia> 
  <Imia>Александр</Imia> 
  <DataRogdenia />
</Uchenik>
<Uchenik> 
  <Kod>000000002</Kod> 
  <ID>0012156456</ID> 
  <Flag>1</Flag> 
  <Familia>Аксёнов</Familia> 
  <Imia>Александр</Imia> 
  <DataRogdenia />
</Uchenik>
<Uchenik> 
  <Kod>000000003</Kod> 
  <ID>0016466463</ID> 
  <Flag>0</Flag> 
  <Familia>Цветков</Familia> 
  <Imia>Александр</Imia> 
</Uchenik>
</Book>

Автор: Digo 24.8.2012, 12:00

По формату файла, к сожалению мне в таком формате передают, сильно ли это будет влиять на скорость  разбора и работы при довольно больших файлах в несколько тысяч элементов?

ваш код работает единственное в 5 строке  $cnt = $uch->Kod->count (); - выдает ошибку, поменял на    $cnt = count($uch->Kod); работает, но не знаю с точки зрения производительности правильно ли написал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)