【问题标题】:Looping XML data with codeigniter使用 codeigniter 循环 XML 数据
【发布时间】:2013-09-25 06:36:25
【问题描述】:

现在变得越来越奇怪了。我花了三个多小时才弄清楚,直到没有结果。我想遍历一个简单的 XML 文件并将结果显示在页面上。

这是我的 XML 代码:

<?xml version="1.0"?>
<CATALOG>
<DATA>
<ENTITY_ID>0111</ENTITY_ID>
<PARENT_ID>0222</PARENT_ID>
<LEVEL>0333</LEVEL>
</DATA>
<DATA>
<ENTITY_ID>0111</ENTITY_ID>
<PARENT_ID>0222</PARENT_ID>
<LEVEL>0333</LEVEL>
</DATA>
</CATALOG>

这是我的模型:

<?php

class xmlmodel extends CI_Model{

public function catalog(){

    $doc = new DOMDocument();
    $path = 'application/libraries/xml.xml';
    $doc->load($path);//xml file loading here

    $data = $doc->getElementsByTagName('DATA');

    foreach($data as $links){

        $entity_ids = $links->getElementsByTagName('ENTITY_ID');

        $parent_ids = $links->getElementsByTagName( "PARENT_ID" );

        return $links;
       }}}

?>

这是我的控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function index()
{
    $this->load->model('xmlmodel');
    $data['category_catalog_entity'] = $this->xmlmodel->catalog();
    $this->load->view('welcome_message', $data);
}
}

这是我的观点:

<?php

foreach($category_catalog_entity as $result){

echo $result;

}
?>

也许你们可以给我另一个想法,因为这种方式根本没有意义,我没有任何错误,只是空白没有显示任何内容。希望有人帮助我。谢谢

【问题讨论】:

  • 您的 xml 不完整。
  • 没关系,这里缺少结束标记,但我的代码中没有。然而只是固定的。
  • @DanielDake,你确定它正在打开application/libraries/xml.xml 吗?
  • 这是一件小事,但有一个关闭?> 可能会在框架中弄乱您的 php 文件 - 建议您不要使用它们。并且xml文件的路径可能不完整。
  • @DrixsonOseña 是的,我确定,因为没有给我任何错误。

标签: php xml codeigniter loops foreach


【解决方案1】:

几个问题:

  1. 您的 catalog() 函数正在返回一个对象。要获得价值,您需要类似的东西 $entity_ids = $links-&gt;getElementsByTagName('ENTITY_ID')-&gt;item(0)-&gt;nodeValue;

  2. 您在循环中返回 $links,因此您的函数将始终返回第一个元素。

您的目录功能:

public function catalog(){

    $doc = new DOMDocument();
    $path = 'application/libraries/xml.xml';
    $doc->load($path);//xml file loading here

    $data = $doc->getElementsByTagName('DATA');

    return $data;
}

那么在你看来:

foreach($category_catalog_entity as $result){

    echo $result->getElementsByTagName('ENTITY_ID')->item(0)->nodeValue . '<br />';
    echo $result->getElementsByTagName('PARENT_ID')->item(0)->nodeValue . '<br />';

}

【讨论】:

  • 好的,我改成了这个 $parent_ids = $links->getElementsByTagName( "PARENT_ID" )->item(0)->nodeValue;我必须返回什么?
  • 这就是诀窍,这样就有意义了。谢谢@subroutines 你拯救了我的夜晚,现在我可以喝啤酒了。 :)
猜你喜欢
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多