通过SimpleXML&创建XML文件simple_html_dom

时间:2010-11-04 22:11:44

标签: php xml simplexml

希望标题没问题。

我的问题是我想要生成一个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循环返回货币的名称,但我无法弄清楚如何将其放在货币的代码标记下面:

<?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 :(得分:0)

你的问题是第二个循环中的$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对象。

答案 1 :(得分:0)

我从来没有找到这个问题的答案,只是结束了echo XML,而不是通过SimpleHTMLDom构建它。