Создание файла XML с помощью SimpleXML & simple_html_dom - PullRequest
0 голосов
/ 05 ноября 2010

Надеюсь, с названием все в порядке.

Моя проблема в том, что я хочу создать файл 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>

В настоящее время я могу заполнить код для всех кодов, но не могу получить имена или местоположения, а также коды в валюте

Вот текущий код, который у меня есть, второй цикл for возвращает названия валюты, но я не могу понять, как разместить это под тегом code в валюте:

<?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 месяц назад или около того, поэтому буду признателен за любые советы или советы в правильном направлении.

(Надеюсь, что форматирование / присвоение имен заголовкам в порядке).

Ответы [ 2 ]

0 голосов
/ 14 сентября 2011

Я так и не нашел ответ на этот вопрос, и просто закончил echo, используя XML, а не создавая его через SimpleHTMLDom.

0 голосов
/ 12 апреля 2011

Ваша проблема в том, что $currency во втором цикле является статическим, в результате чего получается что-то вроде

<currency>
  <code>foo</code>
</currency>
<currency>
  <code>bar</code>
</currency>
<currency>
  <code>baz</code>
  <name>nfoo</name>
  <name>nbar</name>
  <name>nbaz</name>
</currency>

Вам необходимо добавить и имя, и код в один и тот же объект $currency.

...