[英]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->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;
}
您可以使用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处理,因此我尝试使用您的示例xml尝试发布较早的答案(以及发布后的答案),但它们对我不起作用。
在解析之前,我通过在父元素中写入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.