【问题标题】:PHP SimpleXML Parser ChildrenPHP SimpleXML 解析器子项
【发布时间】:2017-05-19 03:52:52
【问题描述】:

如何使用 PHP SimpleXML Parser 同时回显 John 和 Mike?当两者都有不同的项目时

<DATA>
  <KEY>
    <item0>
      <RTS>John</RTS>
    </item0>
    <item1>
      <RTS>Mike</RTS>
    </item1>
  </KEY>
</DATA>

这可行,但如果您尝试使用 $xml = simplexml_load_file("example.xml") 或 die("Error: Object Creation failure");

它不适用于 simple_load_file

<?php
$xml =
"<?xml version='1.0' encoding='UTF-8'?>
<DATA>
<KEY>
<item0>
<RTS>John</RTS>
</item0>
<item1>
<RTS>Mike</RTS>
</item1>
</KEY>
</DATA>";

function xml2array($xml)
{
    $arr = array();

    foreach ($xml as $element)
    {
        $tag = $element->getName();
        $e = get_object_vars($element);
        if (!empty($e))
        {
            $arr[$tag] = $element instanceof SimpleXMLElement ? xml2array($element) : $e;
        }
        else
        {
            $arr[$tag] = trim($element);
        }
    }

    return $arr;
}

$xml = new SimpleXMLElement($xml);
$data = xml2array($xml);
foreach ($data as $key => $value) {
   foreach ($value as $key1 => $val1) {
       echo $val1['RTS']; echo "<br/>";
   }
}
?>

【问题讨论】:

  • 你能提供你目前尝试过的代码吗?
  • 刚刚添加的代码

标签: php xml-parsing simplexml


【解决方案1】:
<?php

    /// load your external xml file here////
    if (file_exists('file.xml')) {
        $xml = simplexml_load_file('file.xml');

        // $xml = new SimpleXMLElement($xml);
        $data = xml2array($xml);
        foreach ($data as $key => $value) {
           foreach ($value as $key1 => $val1) {
               echo $val1['RTS']; echo "<br/>";
           }
        }
    } else {
        exit('Failed to open test.xml.');
    }
    function xml2array($xml)
    {
        $arr = array();

        foreach ($xml as $element)
        {
            $tag = $element->getName();
            $e = get_object_vars($element);
            if (!empty($e))
            {
                $arr[$tag] = $element instanceof SimpleXMLElement ? xml2array($element) : $e;
            }
            else
            {
                $arr[$tag] = trim($element);
            }
        }

        return $arr;
    }

?>

【讨论】:

  • 效果很好,但是当我加载文件时它不起作用。
  • 它很好用,但是当我添加它时它不起作用。 $xml = simplexml_load_file("file.xml") or die("Error: Object Creation failure");
  • 检查你的 apache 配置。 phpinfo()。 libxml 是否安装?
  • 是的,它已安装
  • 效果很好,但如果您尝试使用以下方法包含 xml 文件: $xml = simplexml_load_file("sample.xml") 或 die("Error: Object Creation failure");它不会工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多