За последние 24 часа нас посетили 8232 программиста и 670 роботов. Сейчас ищут 156 программистов ...

конвертация xml в php dom

Тема в разделе "PHP для новичков", создана пользователем Netangel, 20 апр 2018.

Метки:
  1. Netangel

    Netangel Новичок

    С нами с:
    20 апр 2018
    Сообщения:
    4
    Симпатии:
    0
    При написании конвертера xml файлов с разной структурой столкнулся с проблемой: в исходном xml в значениях секций содержится & получаю значения данных секций при помощи цикла.
    Новую xml формирую при помощи dom. При попытке создать новый узел при помощи createElement() получаю ошибку.
    PHP:
    1. $nKey = 1;
    2.             global $iSdoi;
    3.             $iSdoi = $DoiVolum;
    4.             foreach ($references as $refArticle) {
    5.               $refKey = 'ref-'.$iSdoi.'-'.$nKey;
    6.               $citRef =  $dom->createElement('citation');
    7.               $citRef->setAttribute("key", $refKey);
    8.               $citList->appendChild($citRef);
    9.               $unCit = $dom->createElement('unstructured_citation', $refArticle);
    10.               $citRef->appendChild($unCit);
    11.               $nKey++;
    12.             }
    Как построить код что она не возникала?
    Пример исходной строки которая попадает в $refArticle:
    Код (Text):
    1. <reference>Arnold M. Letters // Collected and Arranged by G. W. E. Russell: in 2 vol. L.: Macmillan & Co., 1895. Vol. 1.</reference>
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.742
    обычно в таком случае следует исправить ошибку
     
  3. Netangel

    Netangel Новичок

    С нами с:
    20 апр 2018
    Сообщения:
    4
    Симпатии:
    0
    при большом объеме данных, каким образом?
     
  4. Netangel

    Netangel Новичок

    С нами с:
    20 апр 2018
    Сообщения:
    4
    Симпатии:
    0
    Нашел ответ:
    PHP:
    1. $nKey = 1;
    2.             global $iSdoi;
    3.             $iSdoi = $DoiVolum;
    4.             foreach ($references as $refArticle) {
    5.               $refArticle = htmlspecialchars($refArticle, ENT_XML1); //Преобразование спецсимволов
    6.               $refKey = 'ref-'.$iSdoi.'-'.$nKey;
    7.               $citRef =  $dom->createElement('citation');
    8.               $citRef->setAttribute("key", $refKey);
    9.               $citList->appendChild($citRef);
    10.               $unCit = $dom->createElement('unstructured_citation', $refArticle);
    11.               $citRef->appendChild($unCit);
    12.               $nKey++;
    13.             }