<?php
$XmlApi->sendRequest($xml_request, true );
$xml_response = $XmlApi->readResponse ();
if(!$xml_response) echo $XmlApi->getError();
} else {
echo $XmlApi->getError ();
die ();
}
} else {
echo $XmlApi->getError ();
die ();
}
$vals = array();
$index = array();
$xml_parser = xml_parser_create();
if (!($fp = fopen($xml_response, "r"))) {
die("could not open XML input");
}
$data = fread($fp, filesize($file));
fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
?>
Я очень не силен в пхп, поэтому не судите строго. Как сделать, подскажите пожалуйста?
Спустя 2 дня, 22 часа, 49 минут, 45 секунд (9.11.2009 - 10:37) smoke6969 написал(а):
Что никто не знает как сделать?
Спустя 2 дня, 7 часов, 31 минута, 42 секунды (11.11.2009 - 18:08) smoke6969 написал(а):
Попробовал разобраться в SimpleXML. Все равно не могу добиться чего хочу. Подскажите пожалуйста, где ошибся? Вот чтобы понять, хочу просто вывести значение $parsed_val, которое находится в первом теге <Supplier>, который в первом теге <Router>, который в первом <RouterList>, который в <StartRouting>, который в <CommandList>
Выход:
Notice: Undefined variable: parsed_val in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Undefined variable: parsed_val in C:\apache\connect.ru\www\index.php on line 98
<?php $XmlApi->sendRequest($xml_request, true );
$xml_response = $XmlApi->readResponse ();
if(!$xml_response) echo $XmlApi->getError();
} else {
echo $XmlApi->getError ();
die ();
}
} else {
echo $XmlApi->getError ();
die ();
}
simplexml_load_string($xml_response);
$parsed_val->CommandList->StartRouting->RouterList[0]->Router[0]->Supplier[0];
echo $parsed_val;
?>
Выход:
Notice: Undefined variable: parsed_val in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Undefined variable: parsed_val in C:\apache\connect.ru\www\index.php on line 98
Спустя 7 минут, 3 секунды (11.11.2009 - 18:15) glock18 написал(а):
Цитата |
Notice: Undefined variable: parsed_val in C:\apache\connect.ru\www\index.php on line 97 |
$parsed_val не инициализирован
Спустя 27 минут, 20 секунд (11.11.2009 - 18:43) smoke6969 написал(а):
Простите за это пожалуйста. Такая инициализация прокатит?
Все равно не выводит и пишет:
Где еще может быть проблема?
<?php
$XmlApi->sendRequest($xml_request, true );
$xml_response = $XmlApi->readResponse ();
if(!$xml_response) echo $XmlApi->getError();
} else {
echo $XmlApi->getError ();
die ();
}
} else {
echo $XmlApi->getError ();
die ();
}
$parsed_val = "";
simplexml_load_string($xml_response);
$parsed_val->CommandList->StartRouting->RouterList[0]->Router[0]->Supplier[0];
echo $parsed_val;
?>
Все равно не выводит и пишет:
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 97
Где еще может быть проблема?
Спустя 4 минуты, 26 секунд (11.11.2009 - 18:47) glock18 написал(а):
*Смайл с челюстью до пола* не покатит.
такая покатит
такая покатит
$parsed_val = simplexml_load_string($xml_response);
Спустя 7 минут, 5 секунд (11.11.2009 - 18:54) smoke6969 написал(а):
В очередной раз прошу прощения. Но все равно осталось (96 == $parsed_val->CommandList->StartRouting->) :
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 96
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 96
Notice: Trying to get property of non-object in C:\apache\connect.ru\www\index.php on line 96
<?php
$XmlApi->sendRequest($xml_request, true );
$xml_response = $XmlApi->readResponse ();
if(!$xml_response) echo $XmlApi->getError();
} else {
echo $XmlApi->getError ();
die ();
}
} else {
echo $XmlApi->getError ();
die ();
}
$parsed_val = simplexml_load_string($xml_response);
$parsed_val->CommandList->StartRouting->RouterList[0]->Router[0]->Supplier[0];
echo $parsed_val;
?>
Спустя 34 минуты, 58 секунд (11.11.2009 - 19:29) glock18 написал(а):
"продампь" что возвращает simplexml_load_string. и на основе этого обращайся к элементам. либо неверно обращаешься, либо xml неправильно парсится.
Спустя 18 часов, 13 минут, 45 секунд (12.11.2009 - 13:43) smoke6969 написал(а):
Пожалуйста, обьясните ну для дибилов почему не работает? Вот создал сокращенную версию нужного xml и записал его в файл, сделал обработчик. Посмотрите пожалуйста, если нет ошибок, то может в настройках апача или пхп что-то? Я уже голову сломал
Все лежит в одной папке:
response.xml
index.php
Все равно получаю:
Все лежит в одной папке:
response.xml
<?xml version="1.0" encoding="utf-8"?>
<CommandList>
<StartRouting millis="59">
<LoginId>DDDDDJDDF</LoginId>
<RoutingId>GHKGKGH</RoutingId>
<RouterList>
<Router>
<Supplier>alitalia</Supplier>
<Vendor>
<Name>Alitalia</Name>
<Url>http://www.alitalia.com/</Url>
</Vendor>
<Complete>false</Complete>
<RequestedLocations>
<Origin>
<Type>airport</Type>
<Code>LHR</Code>
</Origin>
<Destination>
<Type>airport</Type>
<Code>MAD</Code>
</Destination>
</RequestedLocations>
</Router>
</RouterList>
</StartRouting>
</CommandList>
index.php
<?php
$parsed_val = simplexml_load_file('response.xml');
$parsed_val->CommandList->StartRouting->RouterList->Router->Supplier;
echo $parsed_val;
?>
Все равно получаю:
Notice: Trying to get property of non-object in C:\apache\parse1.ru\www\index.php on line 4
Notice: Trying to get property of non-object in C:\apache\parse1.ru\www\index.php on line 4
Notice: Trying to get property of non-object in C:\apache\parse1.ru\www\index.php on line 4
Спустя 9 минут, 38 секунд (12.11.2009 - 13:53) Oyeme написал(а):
$parsed_val = simplexml_load_file('response.xml');
echo $parsed_val->getName() . "<br />";
foreach($parsed_val->children() as $child)
{
echo $child->getName() . ": " . $child . "<br />";
}
Спустя 2 часа, 13 минут, 3 секунды (12.11.2009 - 16:06) smoke6969 написал(а):
Спасибо большое за скрипт, но он же выводит только имена XML элементов, т.е. имена тегов. А как же все-таки вывести текст, который находится между тегов? Кстати почему у меня выводит только
Ведь должен показать все элементы по идее?
Но все-же главное: как присвоить переменной, например $parsed_val, значение, которое находится например между <Supplier> и </Supplier>???
Т.е чтоб $parsed_val == "alitalia";
CommandList
StartRouting
Ведь должен показать все элементы по идее?
Но все-же главное: как присвоить переменной, например $parsed_val, значение, которое находится например между <Supplier> и </Supplier>???
Т.е чтоб $parsed_val == "alitalia";
Спустя 19 часов, 36 минут, 55 секунд (13.11.2009 - 11:43) smoke6969 написал(а):
Ну как же мне вытащить то текст внутри тегов?
Спустя 3 дня, 2 часа, 2 минуты, 44 секунды (16.11.2009 - 13:45) smoke6969 написал(а):
Начинаю разбираться по-немногу. Написал такой скрипт:
response1.xml
index1.php
Собственно он выводит как раз почти все, что надо:
Как вы сами видите, скрипт довольно уродский и абсолютно не подойдет для разбора большого ХМЛ. Скажите пожалуйста, есть ли способ прямого доступа к переменным в СимплХМЛ? Если нет, и то, что я написал, по-вашему вполне приемлемо, то как тогда мне отделить одинаковые имена элементов друг от друга? Т.е. тут есть <Code>MAD</Code> и <Code>LHR</Code> Как мне отделить их друг от друга? Помогите пожалуйста.
response1.xml
<?xml version="1.0" encoding="utf-8"?>
<CommandList>
<StartRouting millis="59">
<LoginId>DDDDDJDDF</LoginId>
<RoutingId>GHKGKGH</RoutingId>
<RouterList>
<Router>
<Supplier>alitalia</Supplier>
<Vendor>
<Name>Alitalia</Name>
<Url>http://www.alitalia.com/</Url>
</Vendor>
<Complete>false</Complete>
<RequestedLocations>
<Origin>
<Type>airport</Type>
<Code>LHR</Code>
</Origin>
<Destination>
<Type>airport</Type>
<Code>MAD</Code>
</Destination>
</RequestedLocations>
</Router>
</RouterList>
</StartRouting>
</CommandList>
index1.php
<?
$parsed_val = simplexml_load_file('response1.xml');
foreach($parsed_val->children() as $child)
{
foreach($child->children() as $child)
{
foreach($child->children() as $child)
{
foreach($child->children() as $child)
{
switch ($child->getName())
{
case ("Supplier") :
$supplier = $child;
}
foreach($child->children() as $child)
{
switch ($child->getName())
{
case ("Name") :
$name = $child;
case ("Url") :
$url = $child;
case ("Type") :
$type = $child;
}
foreach($child->children() as $child)
{
switch ($child->getName())
{
case ("Type") :
$type = $child;
case ("Code") :
$code = $child;
}
}
}
}
}
}
}
echo $supplier."<br />";
echo $name."<br />";
echo $url."<br />";
echo $type."<br />";
echo $code."<br />";
echo $type."<br />";
?>
Собственно он выводит как раз почти все, что надо:
alitalia
Alitalia
http://www.alitalia.com/
airport
MAD
airport
Как вы сами видите, скрипт довольно уродский и абсолютно не подойдет для разбора большого ХМЛ. Скажите пожалуйста, есть ли способ прямого доступа к переменным в СимплХМЛ? Если нет, и то, что я написал, по-вашему вполне приемлемо, то как тогда мне отделить одинаковые имена элементов друг от друга? Т.е. тут есть <Code>MAD</Code> и <Code>LHR</Code> Как мне отделить их друг от друга? Помогите пожалуйста.
Спустя 21 час, 12 минут, 2 секунды (17.11.2009 - 10:57) smoke6969 написал(а):
Прикольно самому с собой общаться в форуме