За последние 24 часа нас посетили 22752 программиста и 1262 робота. Сейчас ищет 751 программист ...

поменять значение в xml

Тема в разделе "PHP для новичков", создана пользователем Абу, 13 янв 2020.

  1. Абу

    Абу Новичок

    С нами с:
    13 янв 2020
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!

    Скажите пожалуйста как сделать то что мне нужно:

    через php получаю xml $xmlDoc = file_get_contents('/xmlPath', false, $context);

    этот файл имеет содержание:


    <?xml version="1.0" encoding="UTF-8"?>
    <dataInf>
    <dataB>
    <container>
    <information>
    <car><name>P000001</name><value><string>JH161</string></value></car>
    <car><name>P000002</name><value><string>JH165</string></value></car>
    <car><name>P000003</name><value><string>JH182</string></value></car>
    </information>
    </container>
    </dataB>
    </dataInf>



    мне нужно чтобы php скрипт убрал как правильно сказать или очистил значения например у P000002 очистить значение которое находится <value><string>JH165</string></value> чтобы было так
    <value><string></string></value>
    --- Добавлено ---
    также я хочу отметить что я новичок и пожалуйста напишите как это делается более понятно
    спасибо заранее вам!
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    736
    Адрес:
    Татарстан
    Используйте библиотеки соотвующие, например simpleXML
     
  3. Абу

    Абу Новичок

    С нами с:
    13 янв 2020
    Сообщения:
    2
    Симпатии:
    0
    я читал об этом, но я не знаю как сделать поиск по имени который мне нужен и как очистить значение.
    То есть я не знаю как сделать то, о чем я написал в своем вопросе.
     
  4. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Потому что XML - Зло ^^

    Переходите на светлую сторону Силы - используйте JSON

    :)
     
    Deonis нравится это.
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Абу, если уж применительно к конкретному случаю, можно воспользоваться знанием о структуре xml-файла и регулярными выражениями:
    PHP:
    1. $sName = 'P000002';
    2. $xmlDoc = preg_replace('~(<car><name>'.$sName.'</name><value><string>)(.+)(</string></value></car>)~', '$1$3', $xmlDoc);
    3. var_dump($xmlDoc);
    Это, конечно, не работа с xml документом, но для начала...
     
  6. Vinikon

    Vinikon Активный пользователь

    С нами с:
    9 ноя 2016
    Сообщения:
    10
    Симпатии:
    1
    работа с simpleXML довольно простая. очень мало методов. все прозрачно. главное аккуратность.
    данную задачу я бы решил так:
    Код (Text):
    1. <?php
    2. $way_to_xml_file = './full/way/to/xml/file.xml'; // путь к xml файлу
    3.  
    4. // массив изменяемых ключей
    5. // изменяемый ключ => новое значение
    6. $replaced = [
    7.     'P000002' => 'dsfdsafad',
    8.     'P000003' => 'ffffffffdffdfdff',
    9. ];
    10. $smpl_xml=simplexml_load_file($way_to_xml_file);
    11. foreach ($smpl_xml->dataB->container->information->car as $car) {
    12.     if (isset($replaced[strval($car->name)])) {
    13.         $car->value->string = $replaced[strval($car->name)];
    14.     }
    15. }
    16. $smpl_xml->asXML($way_to_xml_file);
    В $way_to_xml_file введите тот файл, который надо обработать (например, загружаемый через file_get_contents в вашем вопросе