jjzjj

php - simplexml_load_string - 子节点不显示

coder 2024-07-02 原文

我正在处理一个 xml 文件,我试图将其解析为 json 格式,然后解码为一个数组。我主要使用内置的 simplexml_load_stringjson_encode 来完成此操作。问题是在调用 simplexml_load_string 时,xml 未完全保留。 video 的子节点似乎显示为 object(stdClass)。我怎样才能获得 xml 文件的所有值?链接到 XML

代码:

$xml = simplexml_load_string( file_get_contents('http://foxsoccer2go.mobilefeeds.performgroup.com/fox/api/videos.xml/channel/home') );
$json = json_encode($xml);

结果:

["results"]=>
  object(stdClass)#183 (4) {
    ["previousPage"]=>
    object(stdClass)#184 (1) {
      ["@attributes"]=>
      object(stdClass)#185 (1) {
        ["exists"]=>
        string(5) "false"
      }
    }
    ["nextPage"]=>
    string(1) "2"
    ["total"]=>
    string(2) "40"
    ["resultList"]=>
    object(stdClass)#186 (1) {
      ["video"]=>
      array(20) {
        [0]=>
        object(stdClass)#187 (7) {
          ["@attributes"]=>
          object(stdClass)#188 (2) {
            ["id"]=>
            string(7) "2329124"
            ["type"]=>
            string(3) "960"
          }
          ["description"]=>
          object(stdClass)#189 (0) {
          }
          ["created"]=>
          string(25) "2015-02-18 04:04:52 +0000"
          ["duration"]=>
          string(2) "86"
          ["images"]=>
          object(stdClass)#190 (2) {
            ["image"]=>
            object(stdClass)#191 (1) {
              ["@attributes"]=>
              object(stdClass)#192 (3) {
                ["id"]=>
                string(8) "13503818"
                ["width"]=>
                string(3) "100"
                ["height"]=>
                string(3) "100"
              }
            }
            ["thumbnail"]=>
            object(stdClass)#193 (1) {
              ["@attributes"]=>
              object(stdClass)#194 (3) {
                ["id"]=>
                string(8) "13503819"
                ["width"]=>
                string(3) "372"
                ["height"]=>
                string(3) "210"
              }
            }
          }
          ["videoFiles"]=>
          object(stdClass)#195 (1) {
            ["file"]=>
            object(stdClass)#196 (1) {
              ["@attributes"]=>
              object(stdClass)#197 (3) {
                ["id"]=>
                string(8) "14704560"
                ["formatId"]=>
                string(3) "400"
                ["uploaded"]=>
                string(4) "true"
              }
            }
          }
          ["categories"]=>
          object(stdClass)#198 (1) {
            ["category"]=>
            string(21) "UEFA Champions League"
          }
        }

最佳答案

我建议只尝试单独使用 SimpleXML 来解析这些值并坚持下去。只需正确访问这些属性即可。对于那些已经用字符数据包裹的节点,将它们转换为(string)

$xml = simplexml_load_string( file_get_contents('http://foxsoccer2go.mobilefeeds.performgroup.com/fox/api/videos.xml/channel/home'));
foreach($xml->results->resultList->video as $video) {
    $description = (string) $video->description;
    $created = $video->created;
    $duration = $video->duration;
    $image = $video->images->image;
    $thumbnail = (string) $video->images->image;
    $video_file = (string) $video->videoFiles->file;
    $categories = (string) $video->categories->category;

    echo "
    Description: $description <br/>
    Created: $created <br/>
    Duration: $duration <br/>
    Categories: $categories <br/>
    <hr/>
    ";
}

Sample Output

关于php - simplexml_load_string - 子节点不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577119/

有关php - simplexml_load_string - 子节点不显示的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  3. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  4. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  5. ruby - 从 String#split 返回的零长度字符串 - 2

    在Ruby1.9.3(可能还有更早的版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法会给我某些结果。我得到的结果似乎与我的预期相反。这是一个例子:"abcabc".split("b")#=>["a","ca","c"]"abcabc".split("a")#=>["","bc","bc"]"abcabc".split("c")#=>["ab","ab"]在这里,第一个示例返回的正是我所期望的。但在第二个示例中,我很困惑为什么#split返回零长度字符串作为返回数组的第一个值。这是什么原因呢?这是我所期望的:"abcabc".split("a")#=>["bc"

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby-on-rails - Rails 4 WYSIWYG Bootsy 不显示格式 - 2

    我刚刚按照thebootsygempage上的安装说明进行操作在我保存并查看帖子内容之前,一切看起来都不错。这是输出在View中的样子:HeaderSubhead:似乎没有呈现任何html格式,因为它被引号或类似的东西转义了-其他人有这个问题吗?我没有在github页面或SO上看到任何问题来指出我正确的方向。除了遵循gem安装说明之外,我还没有做任何事情,但也许我错过了什么或者只是犯了一个愚蠢的错误。如果你还有什么想知道的,请尽管问。干杯 最佳答案 你需要有这样的东西,转义html: 关

  8. ruby - 为什么当我调用类的实例方法时,初始化不显示为方法? - 2

    我正在写一篇关于在Ruby中几乎一切都是对象的博客文章,我试图通过以下示例来展示这一点:classCoolBeansattr_accessor:beansdefinitialize@bean=[]enddefcount_beans@beans.countendend所以从类中我们可以看出它有4个方法(当然,除非我错了):它可以在创建新实例时初始化一个默认的空bean数组它可以计算它有多少个bean它可以读取它有多少个bean(通过attr_accessor)它可以向空数组写入(或添加)更多bean(也通过attr_accessor)但是,当我询问类本身它有哪些实例方法时,我没有看到默认

  9. ruby-on-rails - 嵌套模型验证 - 错误不显示 - 2

    关于这个有很多问题,但似乎都没有帮助。是的,我看过thisrailscast.我有一个作者,他有很多书,像这样:作者:classAuthor书:classBook我创建了以下表单以在authors#show中向作者添加一本书:#labelsandbuttons......使用以下authors_controller方法:defshow@author=Author.find(params[:id])@book=@author.books.buildend...以及以下books_controller方法:defcreate@author=Author.find(params[:autho

  10. ruby-on-rails - Rails 3 Formtastic。如何让 formtastic 仅显示月份和年份字段而不显示日期? - 2

    我需要formtastic来仅显示月份和年份字段,而不显示日期字段。日期选择器很好,但它显示了整个日历。我不想要日期选择器。f.input:accounting_month,:label=>"会计月份",:as=>:datepicker我只需要月份和年份。 最佳答案 有一种方法可以做到这一点:"Accountingmonth",:order=>[:month,:year]这将自动隐藏“天”输入并为其指定默认值1。 关于ruby-on-rails-Rails3Formtastic。如何让f

随机推荐