如何把子节点的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
)
我有一个 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
)