Надеюсь, что название было ОК.Создание файла XML через SimpleXML & simple_html_dom
Моя проблема заключается в том, что я хочу, чтобы сгенерировать файл XML, который содержит все ISO 4217 валютах, в том числе их наименование, код и странах они используются.
Для этого я использую simple_html_dom, чтобы захватить HTML и выберите конкретные данные со страницы. Затем, используя SimpleXML для построения XML. Я хотел бы выход, как так:
<currency>
<code>USD</code>
<name>United States Dollars</name>
<location>United States of America</location>
</currency>
На данный момент я могу заселить код для всех кодов, но не могу получить имена или местоположения, а также коды, завернутые в валюте
здесь является текущий код у меня есть, то второй цикл возвращает имена валюты, но я не могу понять, как поместить это ниже код тега в валюте:
<?php
//Source: simplehtmldom.sourceforge.net
require('simple_html_dom.php');
//177 currencies
//set URL to parse
$url = "http://en.wikipedia.org/wiki/ISO_4217";
$html = file_get_html($url);
//find all <td> elements that are nested within <table class="wikitable"><tr> and put them into an array
$content = $html->find('table.wikitable tr td');
$newsXML = new SimpleXMLElement("<currencies></currencies>");
$newsXML->addAttribute('type', 'ISO_4217');
Header('Content-type: text/xml');
//loop to add each currency code in <currency><code>HERE</code></currency>
//this loop gets all the codes of the currencies
for($i = 0; $i <= 885; $i += 5){
$currency = $newsXML->addChild('currency');
$code = $currency->addChild('code',strip_tags($content[$i]));
}
//this loop gets all the names of the currencies
for($n = 3; $n <= 531; $n += 5){
$name = $currency->addChild('name',strip_tags($content[$n]));
}
//echo the XML
echo $newsXML->asXML();
?>
Я только начал изучать PHP в месяц или так и назад, так что по достоинству оцените любой совет или точку в правильном направление.
(Надеюсь, что соглашение об именах форматирования/названия в порядке).
Уход за обучением 'XSLT'? Кажется идеальным кандидатом на это ... Если вы хотите придерживаться своего текущего метода: не запрашивайте запрос 'td', запрос' tr' и внутри цикла foreach через эти ' tr's, получить содержимое 1-го, 4-го и 5-го '' td' -учетов этого узла 'tr'. – Wrikken
* (related) * [Лучшие методы анализа HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon
Из-за моей высокой нагрузки обучения XSLT не будет " идеальный. Я попробую взять tr tr вместо этого, мой текущий метод не возможен тогда? Благодарим вас за ссылку Gordon, которую я буду смотреть и использовать в будущем. – Daniel