Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP+XML

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вывести содержимое xml документа с форматированием
Elena14
Отправлено: 21 Апреля, 2015 - 20:06:51
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Добрый вечер. Помогите пожалуйста разобраться? Есть xml документ, пишу php код, где извлекаю данные из xml. Проблема в том, что неправильно выводит содержимое.
Вот xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlnsШокирован="urn:schemas-microsoft-comШокированfficeШокированffice" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-comШокированffice:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
- <w:body>
- <w:p w:rsidR="00C20FFF" w:rsidRDefault="00151BEA" w:rsidP="00151BEA">
- <w:pPr>
<w:jc w:val="center" />
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
</w:pPr>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>Институт Открытого Образования и Информационных Систем</w:t>
</w:r>
</w:p>
- <w:p w:rsidR="00151BEA" w:rsidRDefault="00151BEA" w:rsidP="00151BEA">
- <w:pPr>
<w:jc w:val="center" />
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
</w:pPr>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>2015</w:t>
</w:r>
</w:p>
- <w:p w:rsidR="00151BEA" w:rsidRDefault="00151BEA" w:rsidP="00151BEA">
- <w:pPr>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
<w:u w:val="single" />
</w:rPr>
</w:pPr>
- <w:r w:rsidRPr="00151BEA">
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:b />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>Иванова Елена Анатольевна,</w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:b />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t xml:space="preserve"></w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:b />
<w:i />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>студентка 3 курса</w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
<w:u w:val="single" />
</w:rPr>
<w:t>. Прошу предоставить мне койко-место в общежитии №5.</w:t>
</w:r>
</w:p>
- <w:p w:rsidR="00151BEA" w:rsidRPr="00151BEA" w:rsidRDefault="00151BEA" w:rsidP="00151BEA">
- <w:pPr>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
</w:pPr>
- <w:r w:rsidRPr="00151BEA">
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>13.07.2012</w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t xml:space="preserve"></w:t>
</w:r>
- <w:r w:rsidRPr="00151BEA">
- <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:b />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
<w:t>Иванова</w:t>
</w:r>
</w:p>
- <w:sectPr w:rsidR="00151BEA" w:rsidRPr="00151BEA" w:rsidSect="00C20FFF">
<w:pgSz w:w="11906" w:h="16838" />
<w:pgMar w:top="1134" w:right="850" w:bottom="1134" w:left="1701" w:header="708" w:footer="708" w:gutter="0" />
<w:cols w:space="708" />
<w:docGrid w:linePitch="360" />
</w:sectPr>
</w:body>
Сам код:
</w:document>
PHP:
скопировать код в буфер обмена
  1. <?
  2. function getParams(&$params=array(), $node, $r=false)
  3. {
  4.         foreach ($node->childNodes as $node1) {
  5.                 if($node1->hasChildNodes()){
  6.                         if($node1->nodeName=='w:r')
  7.                                 $r=true;
  8.                         getParams($params,$node1, $r);
  9.         }
  10.                 else {
  11.                         if ($node1->nodeName=='w:b'&&$r)
  12.                                 $params['b']=true;
  13.                         if ($node1->nodeName=='w:u'&&$r)
  14.                                 $params['u']=true;
  15.                         if ($node1->nodeName=='w:i'&&$r)
  16.                                 $params['i']=true;
  17.                         if ($node1->nodeName=='w:pStyle'&&$node1->attributes->getNamedItem('val')->nodeValue=='ListParagraph')
  18.                                 $params['list']=true;                  
  19.                 }
  20.         }
  21.         return;
  22. }
  23. //получаем список файлов для папки-источника,
  24. $main_dir = dirname(__FILE__);
  25. //echo "$main_dir";
  26. //Получем список файлов в текущем каталоге и
  27. //отбрасываем элементы с именами . и ..
  28. if ($handle = opendir($main_dir.'/files/primer')) {
  29.         $reader = new XMLReader;
  30.         //$list=false;
  31.         //чтение элементов каталога
  32.         while (false !== ($file = readdir($handle))) {
  33.                 if ($file != "." && $file != "..") {
  34.                //echo $file.'</br>';
  35.                 }
  36.         }
  37.         closedir($handle);
  38. }
  39. echo $file.'</br>';
  40. require_once('C:/WebServers/pclzip/pclzip.lib.php');
  41. //Создаем объект $zip. В качестве параметра передаем имя архива
  42. $zip = new PclZip("primer.zip");
  43. //$zip->opendir($main_dir.'/www/'.$file);
  44. //$zip->extractTo($main_dir.'/primer/');
  45. //$zip->close();
  46. $reader->open($main_dir.'/files/primer/word/document.xml');
  47. $text = '';
  48. while ($reader->read()){
  49.         $doc = $reader->expand();
  50.         if ($doc->childNodes === NULL)
  51.      continue;
  52.         foreach ($doc->childNodes as $node) {
  53.                 if ($node->childNodes === NULL)
  54.          continue;
  55.                 foreach ($node->childNodes as $node2) {
  56.                         $params=array('b'=>false,'i'=>false, 'u'=>false, 'list'=>false);
  57.                         if($node2->tagName=='w:p') {
  58.                                 $text.='<p>';
  59.                                     foreach($node2->childNodes as $node3) {
  60.                                       if($node3->nodeName=='w:r') {
  61.                                         $params=array('b'=>false,'i'=>false, 'u'=>false, 'list'=>false);
  62.                                          getParams($params, $node3);
  63.                                 $text.=
  64.                                 ($params['b']?'<strong>':'').
  65.                                 ($params['i']?'<em>':'').
  66.                                 ($params['u']?'<u>':'').
  67.                                  $node3->nodeValue.
  68.                                 ($params['u']?'</u>':'').
  69.                                 ($params['i']?'</em>':'').
  70.                                 ($params['b']?'</strong>':'');
  71.                                 }
  72.                          }
  73.                         $text.='</p>';
  74.                         }
  75.                 }
  76.         }
  77. }
  78. $reader->close();
  79. echo $text;
  80. ?>
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Апреля, 2015 - 20:44:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Божежмой...
Ну раз добрался(лась?) до DOM реализации (не важно в какой либе) - возьми xpath заюзай уже, а.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB