MODX XML Import
        Приветствую, есть xml файл. Требуется брать из него значения и по ним создавать новую страницу в modx. Не могу понять, как это реализовать
    
    
                                                                                
            продажа
<property-type>жилая</property-type>
квартира
<creation-date>2019-01-29T11:41:05+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
Россия
Ленинградская область
Всеволожский район
<locality-name>пос. Бугры </locality-name>
Всеволожский район, посёлок Бугры, Тихая улица, 1
Парнас
<time-on-transport>10</time-on-transport>
60.0697
30.4123
storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg
34.18
кв. м
Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на 1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся объекты инфраструктуры шаговой доступности — магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы. Для удобства автомобилистов предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также гостевые парковочные зоны.
1
<rooms-offered>1</rooms-offered>
7
<floors-total>17</floors-total>
<building-name>Новые Горизонты</building-name>
<yandex-building-id>51646</yandex-building-id>
<building-type>Кирпично-монолит.</building-type>
<building-section>очередь 1, корпус 1</building-section>
<built-year>2017</built-year>
<ready-quarter>2</ready-quarter>
<building-state>hand-over</building-state>
+
<is-elite>-</is-elite>
+
2555000
RUR
<deal-status>переуступка</deal-status>
<sales-agent>
+
агентство
HORS
<email/>
</sales-agent>
предчистовая
Комментарии: 13
                По-разному, например:
1. Загрузить XML-файл куда-нибудь в бэкенд.
2. Написать сниппет, в нем создать из XML-файла объект с помощью функции simplexml_load_file();
3. Создать переменные, обращаясь к нужным полям объекта;
4. Создать объект с помощью $modx->newObject('modDocument');
5. Прописать нужные параметры из переменных;
                    1. Загрузить XML-файл куда-нибудь в бэкенд.
2. Написать сниппет, в нем создать из XML-файла объект с помощью функции simplexml_load_file();
3. Создать переменные, обращаясь к нужным полям объекта;
4. Создать объект с помощью $modx->newObject('modDocument');
5. Прописать нужные параметры из переменных;
                Как вариант конечно, но товарищ имеет ввиду скорее всего родной импорт от modx, никогда им не пользовался.            
                    
                Посмотрим, что скажет товариЩЪ)            
                    
                Любым способом самым надежным и действенным)
Просто в пхп не особо(
                    Просто в пхп не особо(
                Щас, дай ка посмотрю            
                    
                Сегодня созвездия расположились особым образом и я добрый!)
Вот код. Во-первых, у тебя XML не полностью приведен видимо. Должен быть корень (имя произвольное).
Допустим, XML-файл сидит в папке misc, и называется 77777.xml
Создаем сниппет, назовем его temp.
Сниппет можно вставить куда-нибудь и открыть страницу, он активируется.
Вуаля!
                    Вот код. Во-первых, у тебя XML не полностью приведен видимо. Должен быть корень (имя произвольное).
Допустим, XML-файл сидит в папке misc, и называется 77777.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
продажа
<property-type>жилая</property-type>
квартира
<creation-date>2019-01-29T11:41:05+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
Россия
Ленинградская область
Всеволожский район
<locality-name>пос. Бугры </locality-name>
Всеволожский район, посёлок Бугры, Тихая улица, 1
Парнас
<time-on-transport>10</time-on-transport>
60.0697
30.4123
storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg
34.18
кв. м
Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на 1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся объекты инфраструктуры шаговой доступности — магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы. Для удобства автомобилистов предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также гостевые парковочные зоны.
1
<rooms-offered>1</rooms-offered>
7
<floors-total>17</floors-total>
<building-name>Новые Горизонты</building-name>
<yandex-building-id>51646</yandex-building-id>
<building-type>Кирпично-монолит.</building-type>
<building-section>очередь 1, корпус 1</building-section>
<built-year>2017</built-year>
<ready-quarter>2</ready-quarter>
<building-state>hand-over</building-state>
+
<is-elite>-</is-elite>
+
2555000
RUR
<deal-status>переуступка</deal-status>
<sales-agent>
+
агентство
HORS
<email/>
</sales-agent>
предчистовая
</root>То, что в XML есть дефисы, тоже не очень хорошо. Но можно при выполнении запросов обернуть нужные поля в фигурные скобки с кавычками.Создаем сниппет, назовем его temp.
<?php
$xml= simplexml_load_file('misc/77777.xml');    //создаем объект из xml
$parent = 2;    //ид родителя
$template = 3;    //ид шаблона
$pagetitle = $xml->{'property-type'}[0];    //берем отсюда название
$alias = 'page';    //имя адреса
$publishedon = $xml->{'creation-date'}[0];    //дата создания
$published = true;    //опубликовано
$introtext = $xml->{'building-name'}[0];    //аннотация
$content = $xml->{'building-type'}[0];    //контент
$doc = $modx->newObject('modDocument');    //создаем и заполняем
$doc->set('parent',$parent);
$doc->set('template',$template);
$doc->set('pagetitle',$pagetitle);
$doc->set('alias',$alias);
$doc->set('publishedon',$publishedon);
$doc->set('published',$published);
$doc->set('introtext',$introtext);
$doc->setContent($content);
$doc->save();    //сохраняемИспользовать свои поля по аналогии. Можно обернуть в цикл и создавать несколько.Сниппет можно вставить куда-нибудь и открыть страницу, он активируется.
Вуаля!
                ничесе)
Спасибо большое, вроде понял что куда и как)
Сейчас буду тогда пробовать и дополнять)
                    Спасибо большое, вроде понял что куда и как)
Сейчас буду тогда пробовать и дополнять)
                Извиняюсь, что наглею)
Но при попытке спарсить этим кодом мой xml он ни в какую не хочет выводить значения
                    Но при попытке спарсить этим кодом мой xml он ни в какую не хочет выводить значения
<?xml version="1.0" encoding="utf-8"?>
<realty-feed xmlns="http://webmaster.yandex.ru/schemas/feed/realty/2010-06">
  <generation-date>2019-02-12T20:49:06+03:00</generation-date>
    <offer internal-id="N20050">
    <type>продажа</type>
    <property-type>жилая</property-type>
    <category>квартира</category>
        <creation-date>2019-01-29T11:41:05+03:00</creation-date>
      <last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
      <location>
    <country>Россия</country>
            <region>Ленинградская область</region>
        <district>Всеволожский район</district>
          <locality-name>пос. Бугры  </locality-name>    
    <address>Всеволожский район, посёлок Бугры, Тихая улица, 1</address>
                <metro>
            <name>Парнас</name>
                        <time-on-transport>10</time-on-transport>        </metro>
                    <latitude>60.0697</latitude>
        <longitude>30.4123</longitude>
    
</location>
                            <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg</image>
                                            <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg</image>
                    
    <area>
    <value>34.18</value>
    <unit>кв. м</unit>
    </area>
                      <description>
                    
            Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на  1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся  объекты инфраструктуры шаговой доступности - магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы. 
Для удобства автомобилистов  предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также  гостевые парковочные зоны.
            </description>
        <rooms>1</rooms>    <rooms-offered>1</rooms-offered>                    <floor>7</floor>      <floors-total>17</floors-total>    <building-name>Новые Горизонты</building-name>
      <yandex-building-id>51646</yandex-building-id>    <building-type>Кирпично-монолит.</building-type>    <building-section>очередь 1, корпус 1</building-section>
          <built-year>2017</built-year>
        <ready-quarter>2</ready-quarter>
            <building-state>hand-over</building-state>    <lift>+</lift>
    <is-elite>-</is-elite>
    <parking>+</parking>
    <price>
      <value>2555000</value>
      <currency>RUR</currency>
    </price>
    <deal-status>переуступка</deal-status>
      <sales-agent>
    <name>  </name>  <phone>+</phone>
  <category>агентство</category>
  <organization>HORS</organization>
    <email></email>
</sales-agent>      
    <renovation>предчистовая</renovation>
                
            
  </offer>
  <offer internal-id="N20051">
    <type>продажа</type>
    <property-type>жилая</property-type>
    <category>квартира</category>
        <creation-date>2019-01-29T11:41:06+03:00</creation-date>
      <last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
      <location>
    <country>Россия</country>
                    <locality-name>Санкт-Петербург</locality-name>
        <sub-locality-name>Кировский</sub-locality-name>
    
    <address>Двинская ул., 8, к. 3, литера А</address>
                <metro>
            <name>Балтийская</name>
            <time-on-foot>15</time-on-foot>                    </metro>
                    <latitude>59.9069</latitude>
        <longitude>30.2513</longitude>
    
</location>
                            <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_390385ad1.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_b8d66ef41.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_eddcf1b91.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_69ad9d481.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_628a458b1.jpg</image>
                                            <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20051_3fc206f21.jpg</image>
                              <image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20051_849483991.jpg</image>
                    
    <area>
    <value>89.37</value>
    <unit>кв. м</unit>
    </area>
                      <description>
                    
            Квартира в строящемся жилом комплексе "Екатерингоф" в Кировском районе. От станции метро "Нарвская" - 15 минут пешком. В 170 метрах детский сад, три школы. Поблизости есть клиника и медицинский центр, продуктовые магазины. 
Квартиры сдаются с качественной предчистовой отделкой, большие кухни, кладовые. Разные варинты планировок. Звоните и мы подьерем для Вас лучший вариант.
            </description>
    <new-flat>1</new-flat>    <rooms>3</rooms>    <rooms-offered>3</rooms-offered>                    <floor>6</floor>      <floors-total>13</floors-total>    <building-name>Панорамы залива</building-name>
      <yandex-building-id>56558</yandex-building-id>    <building-type>Кирпично-монолит.</building-type>    <building-section>Корпус 1</building-section>
          <built-year>2019</built-year>
        <ready-quarter>2</ready-quarter>
            <building-state>unfinished</building-state>    <lift>+</lift>
    <is-elite>-</is-elite>
    <parking>-</parking>
    <price>
      <value>7150000</value>
      <currency>RUR</currency>
    </price>
    <deal-status>переуступка</deal-status>
      <sales-agent>
    <name>  </name>  <phone>+</phone>
  <category>агентство</category>
  <organization>HORS</organization>
    <email></email>
</sales-agent>      
    <renovation>предчистовая</renovation>
                
            
  </offer>
</realty-feed>            
                Добрый день, можете подсказать как сохранять в TV поля?
Пробую $doc->setTVValue('image',$image);
Если в дефолтные поля, то все работает но в TV не сохраняет, в чем может быть причина?
                    Пробую $doc->setTVValue('image',$image);
Если в дефолтные поля, то все работает но в TV не сохраняет, в чем может быть причина?
                Посмотри, может в reality-feed параметр мешает.
Я бы убрал все параметры в тегах с помощью автозамены.
PHP может ругаться из-за каких-то символов.
Можно еще поодиночке проверять с помощью echo.
                    Я бы убрал все параметры в тегах с помощью автозамены.
PHP может ругаться из-за каких-то символов.
Можно еще поодиночке проверять с помощью echo.
                В том то и дело, что нельзя ничего менять в xml 
но на выбор есть 2 вида, Тот что я показывал и еще один
                    но на выбор есть 2 вида, Тот что я показывал и еще один
                Только что проверял твой XML какой есть, без каких-либо изменений.
Все нормально парсится.
Проверь сначала с помощью echo, типа того:
Также правильно обращаться к полям XML. Где-то мб опечатка.
Проверь версии PHP и MODX.
Причина может быть где угодно!
                    Все нормально парсится.
Проверь сначала с помощью echo, типа того:
<?php
$xml= simplexml_load_file('misc/77777.xml');
echo $xml->offer[0]->type[0];Проверь путь к файлу XML, имя и тд.Также правильно обращаться к полям XML. Где-то мб опечатка.
Проверь версии PHP и MODX.
Причина может быть где угодно!
                Нашел в чем проблема, он не понимает русский            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.