1: Я хочу получить количество продуктов в файле XML. Я думал, что могу сделать это с помощью счетчика или marker-> lenght
. Но он не работает. Как я могу это решить?Получите XML "lenght" и покажите, имеет ли значение тега строку? (PHP)
$gamesplanetPath = 'data/gamesplanet.xml';
$kinguinPath = 'data/kinguin.xml';
$onlinekeystorePath = 'data/onlinekeystore.xml';
$g2aPath = 'data/g2a.xml';
function countAd($gamesplanetPath){
$dom = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load($gamesplanetPath);
$counter = 0;
$root = $dom->documentElement;
$marker = $root->getElementsByTagName('name');
for($i = $marker->length - 1; $i >= 0 ; $i--){
$counter = $counter + 1 ;
}
echo "Products: " . $counter ."\n";
}
2: Мой второй вопрос, как я могу проверить, если продукт, и я имею в виду URL и описание, содержит ключевое слово, как «пара»?
3: Как я могу добавить ребенка к каждому продукту и дать этому ребенку значение?
XML, который я хочу, чтобы загрузить:
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<name>Final Fantasy VII</name>
<desc>Den Rollenspiel-Klassiker FINAL FANTASY VII gibt es jetzt für den PC, mit brandneuen Online-Features!</desc>
<price>11.69</price>
<price_base>12.99</price_base>
<link>https://de.gamesplanet.com/game/final-fantasy-vii-download--1001-1</link>
<publisher>Eidos - Square Enix</publisher>
<category>RPG (Rollenspiel)</category>
<ean/>
<packshot>https://de.gamesplanet.com/acache/10/01/1/de/packshot-770bf6d03800b87dc0f9509f21e8d423.jpg</packshot>
</product>
Первый на работает в моем классе cronjob.php. В этом классе я загружаю XML и переименовываю значения. Я всегда делаю DOMDocument следующим образом:
$dom = new DOMDocument('1.0', 'utf-8');
Так что у меня нет проблем. Также я закрываю и снова открываю свой XML-файл во время cronjob. Но в классе test.php он не открывает файл, потому что я получаю это сообщение об ошибке:
"D:\Anwendung\PHP 7\php-win.exe" C:\Users\Jan\PhpstormProjects\censored\test.php
PHP Warning: DOMDocument::load(): Input is not proper UTF-8, indicate encoding !
Bytes: 0xE3 0xA4 0x63 0x68 in file:/C:/Users/Jan/PhpstormProjects/censored/data/gamesplanet.xml, line: 1423 in C:\Users\Jan\PhpstormProjects\censored\test.php on line 18
PHP Fatal error: Uncaught Error: Call to a member function getElementsByTagName() on null in C:\Users\Jan\PhpstormProjects\censored\test.php:23
Stack trace:
#0 C:\Users\Jan\PhpstormProjects\censored\test.php(86): countAd('data/gamesplane...')
#1 {main}
thrown in C:\Users\Jan\PhpstormProjects\censored\test.php on line 23
Process finished with exit code 255
Я знаю, что PhpStorm хочет мне сказать, что файл XML не в UTF-8. Но странно, что каждый раз, когда я открываю XML-файл и закрываю его, у меня нет проблем. И очень странно, что файл XML показывает символы, такие как «А», «ö» и так далее ...
Но в строке 1423 у меня есть: W㥣hter Von Mittelerde
(Notepad ++) Посмотреть
В Chrome у меня есть : Wächter Von Mittelerde
Можете ли вы предоставить пример целевой XML? – Timurib
Был ли я выше в вопросе! (сейчас) – Jan
Решен ли вопрос? – Timurib