Разобрать XML в PHP на SimpleXML

196
10 декабря 2016, 10:20

Как можно получить все значения элементов "name" для файла со структурой:

<?xml version="1.0" encoding="utf-8" ?>    
    <ftpman port="1111" >
    <Upload name = "nameagent"
            pattern = "metods"
            applyMethod = "SET"
            ftpServer = "server.ru"
            ftpServerPort = "21"
            ftpSeparator = "/"
            ftpRemoteVerification = "false"
            ftpUser = "user"
            reconnect = "true"
            ftpDstDir = "/make/"
            ftpCacheDir = "/cache/"
            ftpActiveMode = "true"
            ftpTimeout = "10"
            ftpFileType = "binary"
            saveTime = "false"
            srcDir = "dirs"
            fileMask = "csv$"
            delayBetween = "10"
            zip = "false"
            gzip = "false"
            unpack = "false"
            lagInterval = "0"
            queueWarnInterval = "1800"
            queueWarnOn = "20"
            queueWarnOff = "0"
            slowStop = "true"/>
    <Load name = "nameagent"
            pattern = "metods"
            applyMethod = "SET"
            ftpServer = "server.ru"
            ftpServerPort = "21"
            ftpSeparator = "/"
            ftpRemoteVerification = "false"
            ftpUser = "user"
            reconnect = "true"
            ftpDstDir = "/make/"
            ftpCacheDir = "/cache/"
            ftpActiveMode = "true"
            ftpTimeout = "10"
            ftpFileType = "binary"
            saveTime = "false"
            srcDir = "dirs"
            fileMask = "csv$"
            delayBetween = "10"
            zip = "false"
            gzip = "false"
            unpack = "false"
            lagInterval = "0"
            queueWarnInterval = "1800"
            queueWarnOn = "20"
            queueWarnOff = "0"
            slowStop = "true"
    />
    </ftpman>
Answer 1

Допустим весь ва XML находится в переменной $xmlString. Если загрузить его в SimpleXML, можно получить доступ к нужным узлам, адресуя их при помощи XPath. Например, для вашего случая можно перебрать все элементы с аттрибутами name (ну и потом брать нужные значения уже из аттрибутов найденных элементов)

$sxml = simplexml_load_string($xmlString);
$found = $sxml->xpath('//@name');
foreach ($found as $element) {
    print $element->name . PHP_EOL;
}

Почитайте также про XPATH

READ ALSO
Не подключаются внешние стили

Не подключаются внешние стили

Подскажите пожалуйста почему не подключаются внешние стилиВ header

195
Функция преобразования в seo url, транслит на PHP

Функция преобразования в seo url, транслит на PHP

Есть ли функция на php для преобразования текста вида "пример !? я ссылка *&" в seo url "primer-ya-ssilka"

295
PHP SSH2 скорость работы

PHP SSH2 скорость работы

Здравствуйте! Есть такой скрипт на php:

243
websocket сервер на php

websocket сервер на php

Всем привет

568