0

このフィードを処理したいとしましょう: http://tools.forestview.eu/xmlp/xml_feed.php?aid=1094&cid=1000

この方法で XML ファイルのノードを表示しようとしています。

deals->deal->dealsite
deals->deal->deal_id
deals->deal->deal_title

これは、XML タグが不明なフィードを処理できるようにするためです。したがって、ユーザーに deal->deal->deal_title が Deal Title であることを選択させ、そのように認識させます。

私はこのコードでこれを行うために何年も試みてきました:

    class HandleXML {
    var $root_tag = false;
    var $xml_tags = array();
    var $keys = array();

function parse_recursive(SimpleXMLElement $element)
{
        $get_name = $element->getName();
        $children   = $element->children();     // get all children

        if (empty($this->root_tag)) {
            $this->root_tag = $this->root_tag.$get_name;
        }

        $this->xml_tags[] = $get_name;

        // only show children if there are any
        if(count($children))
        {
               foreach($children as $child)
               {
                $this->parse_recursive($child); // recursion :)
               }
        }
        else {
            $key = implode('->', $this->xml_tags);
            $this->xml_tags = array();
            if (!in_array($key, $this->keys)) {
                if (!strstr('>', $key) && count($this->keys) > 0) { $key = $this->root_tag.'->'.$key; }
                if (!in_array($key, $this->keys)) {
                    $this->keys[] = $key;
                }
            }
        }
    }
}

$xml = new SimpleXMLElement($feed_url, null, true);
$handle_xml = new HandleXML;

$handle_xml->parse_recursive($xml);
foreach($handle_xml->keys as $key) {
    echo $key.'<br />';
}
exit;

しかし、ここに私が代わりに得るものがあります:

deals->deal->dealsite
deals->deal_id
deals->deal_title

2 行目と 3 行目に、deal->の部分がありません。

私もこのコードを試してみました: http://pastebin.com/FkPWXF64しかし、それは間違いなく最善の方法ではなく、常に機能するとは限りません。

何度やっても出来ませんでした。

4

1 に答える 1

0

私のサイトの 1 つで、xml フィードを処理するために少し異なるアプローチを使用しています。あなたの場合、次のようになります。

$xml = simplexml_load_file("http://tools.forestview.eu/xmlp/xml_feed.php?aid=1094&cid=1000");

foreach($xml->{'deal'} as $deal) 
{
$dealsite = $deal->{'dealsite'};
$dael_id = $deal->{'dael_id'};
$deal_title = $deal->{'deal_title'};
$deal_url = $deal->{'deal_url'};
$deal_city = $deal->{'deal_city'};
$deal_category = $deal->{'deal_category'};

// and so on for the rest

// do some stuff with the variables like insert into MySQL

}
于 2012-05-04T19:03:11.307 に答える