PHP получить конкретные данные из XML-файла

Это файл XML.

<?xml version="1.0" encoding="utf-8"?>
<UW xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">
<UWdata>
<List>
<IdProduct>1</IdProduct>
<ProductName>product</ProductName>
<ProductNameDE>product</ProductNameDE>
<ProductNameEN>product</ProductNameEN>
<Uf>1</Uf>
<PSIg>1</PSIg>
<Ug>1</Ug>
</List>
</UWdata>
</UW>


$lines_array=file($url);
$lines_string=implode('',$lines_array);
$xml=simplexml_load_string($lines_string) or die("Error: Cannot create object");

Я пытаюсь с этим

echo $xml->UWdata[1]->ProductName;

Но ничего не возвращается. Я хочу вернуть название продукта.

-2

Решение

Пример кода, Использование simplexml_load_string

<?php
$a = '<?xml version="1.0" encoding="utf-8"?>
<UW xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">
<UWdata>
<List>
<IdProduct>1</IdProduct>
<ProductName>product</ProductName>
<ProductNameDE>product</ProductNameDE>
<ProductNameEN>product</ProductNameEN>
<Uf>1</Uf>
<PSIg>1</PSIg>
<Ug>1</Ug>
</List>
</UWdata>
</UW>';

$xml=simplexml_load_string($a) or die("Error: Cannot create object");

echo ($xml->UWdata->List->ProductName);
?>
1

Другие решения

Я изменил ваш скрипт и поместил XML во внешний файл с именем testxml.xml, так, как это должно быть. Всегда разделяйте функцию и данные, которые она должна обрабатывать. Я использовал ваш XML, как это:

<?xml version="1.0" encoding="utf-8"?>
<UW xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">
<UWdata>
<List>
<IdProduct>1</IdProduct>
<ProductName>productTEST</ProductName>
<ProductNameDE>product</ProductNameDE>
<ProductNameEN>product</ProductNameEN>
<Uf>1</Uf>
<PSIg>1</PSIg>
<Ug>1</Ug>
</List>
</UWdata>
</UW>

И с помощью следующего скрипта он возвращает productTEST только.

$xmlstr = file_get_contents('./testxml.xml');
$xml = simplexml_load_string($xmlstr);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
echo $array['UWdata']['List']['ProductName'];

Надеюсь это поможет.

//редактировать:
Хотя я не знаю ваш проект, вы можете использовать foreach-подход, если возможно, что ваш xml содержит более одного List элемент

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector