如何把子节点的XML个值放到一个数组中,return这个数组呢?

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

我有一个 XML 并且只想从特定的子节点读取值。然后我想将这些读取的值放入一个数组中,最后 return 这个数组。所以我想获取保存在数组中的名称的所有值和 return 这个数组。最后,我想在 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 属性 转换为 string,因为默认情况下 $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;
}

我没有做很多 xml 处理,所以我用你的样本 xml 尝试了之前发布的答案(以及我发布后出现的答案),但他们没有为我工作。

我设法通过在解析之前将 xml 写入父元素内部来处理您的数据,然后循环并将名称转换为字符串。

代码:(Demo)

$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',
)

您可以使用 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
)