繁体   English   中英

如何将子节点的XML值放入数组并返回此数组?

[英]How to put XML values of child nodes into an array and return this array?

我有一个XML,只想从特定的子节点读取值。 然后,我想将这些读取的值放入一个数组中,并在最后返回此数组。 所以我想获取保存在数组中的name的所有值并返回此数组。 最后,我想在HTML文件中将这个数组的所有值显示在彼此之间。

到目前为止,这是我的想法(显然不起作用):

$items= simplexml_load_file('https://example.com/xml');
$itemList = array();
foreach ($items as $item->name) {
   // Push the values of name of the item nodes into an array
}
return $itemList;

这是XML文件的结构:

<item>
   <name>Name 1</name>
</item>
<item>
   <name>Name 2</name>
</item>
<item>
   <name>Name 3</name>
</item>
<item>
   <name>Name 4</name>
</item>

遍历每个项目并采用其name属性。 显式将name属性$item->namestring ,默认情况下, $item->name 不是字符串:

foreach ($items as $item) {
   $itemList[] = (string)$item->name;
}

您需要更改foreach()代码以及在其中进行赋值:-

$itemList = array();
foreach ($items as $item) { //$item->name will not work here
   $itemList[] = $item->name;
}

您可以使用json_encode()json_decode()将xml数据转换为字符串数据类型。 之后,要使用哪个标记,可以在foreach()循环中使用该标记。 然后,您应该创建一个空数组并将所有字符串数据插入到空数组中。

    $items = simplexml_load_file('https://example.com/xml');
    $json = json_encode($items);
    $array = json_decode($json,TRUE);

    $names = array();
    foreach ($array["item"] as $key => $value) {
      $names[] = $value["name"];
    }


    print_r($names);

结果:

  Array
(
    [0] => Name 1
    [1] => Name 2
    [2] => Name 3
    [3] => Name 4
)

我不进行大量的xml处理,因此我尝试使用您的示例x​​ml尝试发布较早的答案(以及发布后的答案),但它们对我不起作用。

在解析之前,我通过在父元素中写入xml来处理数据,然后循环并将其转换为字符串。

代码:( 演示

$xml = <<<XML
<item>
   <name>Name 1</name>
</item>
<item>
   <name>Name 2</name>
</item>
<item>
   <name>Name 3</name>
</item>
<item>
   <name>Name 4</name>
</item>
XML;
foreach (simplexml_load_string("<root>{$xml}</root>")->item as $item) {
   $names[] = (string)$item->name;
}
var_export($names);

输出:

array (
  0 => 'Name 1',
  1 => 'Name 2',
  2 => 'Name 3',
  3 => 'Name 4',
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM