[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: получить строку из внешнего xml
lumb
Пользователь загружает файл через форум на сторонный сервер....
Сервер возвращает xml вида:

<?xml version="1.0" encoding="windows-1251"?><UploadSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<path>ссылка1</path>
<url>ссылка2</url>
</UploadSettings>

Как получить ссылки 1 и 2 с помощью php и SimpleXML? (или чего-нибудь другого)
Попытался читать мануалы - только больше запутался((



Спустя 1 час, 47 минут, 20 секунд (28.12.2008 - 16:16) S(r1pt написал(а):
deleting

Спустя 23 дня, 4 часа, 45 минут, 25 секунд (21.01.2009 - 21:02) AndryG написал(а):
Накой фиг тут Регулярные выражения?!
Первое, что в голову залезло -- DOM.
Не пользовался SimpleXML ...идем на справку DOM ... читать мы не любим - идем сразу в примеры.

http://ua2.php.net/manual/ru/domdocument.loadxml.php
Код

<?php
$doc = new DOMDocument();  //ЭТО И СЛЕДУЮЩАЯ - НАШИ
$doc->load('book.xml');
echo $doc->saveXML();  // ЭТО ВЫБРОСИТЬ НАФИГ
?>

Загрузили .. теперь надо добраться до корневого элемента (<UploadSettings>)
http://ua2.php.net/manual/ru/class.domdocument.php
свойство - readonly public DOMElement $documentElement ;
Другими словами ...
Код

$root = $doc->documentElement; //ПОЛУЧАЕМ КЛАСС DOMELEMENT

Круто ... мы внутри <UploadSettings> теперь нужно пройти по его дитятям

http://ua2.php.net/manual/ru/class.domnode.php (это родитель класса DOMElement .. именно в нём свойство, которое нас интересует)
public readonly DOMNodeList $childNodes ;
Возвращает класс - список детей
Код

$child_list = $root->childNodes;

Смотрим, что за класс-список такой
http://ua2.php.net/manual/ru/class.domnodelist.php
Тю!
Проходим по детятам ...
Код

foreach($child_list as $child){
//ПЕРЕМЕННАЯ $child у нас класса DOMNode
/// идем и читаем http://ua2.php.net/manual/ru/class.domnode.php
echo $child->textContent;
}


Всё.

Спустя 14 часов, 15 минут, 29 секунд (22.01.2009 - 11:17) dfsq написал(а):
Нафиг дом в данном случае

Код

$str = '<?xml version="1.0" encoding="windows-1251"?><UploadSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<path>http://fsdfg.dff</path>
<url>http://sdfgsdfgsdf.dfgdf.ddf</url>
</UploadSettings>';

$xml = new SimpleXMLElement($str);
$url = $xml->xpath('//path');
$url2 = $xml->xpath('//url');

echo $url[0][0].'<br>';
echo $url2[0][0];

и кстати, регулярки, часто бывают удобны для не сложного разбора,

Спустя 6 минут, 39 секунд (22.01.2009 - 11:24) dfsq написал(а):
если xml такая простая, то зачем дом и симплXml?

Код

preg_match('|<path>(.+)</path>|', $str, $arr1);
preg_match('|<url>(.+)</url>|', $str, $arr2);
echo $arr1[1].'<br>';
echo $arr2[1];


ps. на старом форуме блоки [code], по-моему были лучше, выглядело более читаемо, нежели сейчас.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.