xml php DOM 从循环中获取每个父节点
xml php DOM get each parent node from loop
我有Xml个文件
<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>
如何将每个项目 id 和 title 标签名称放入分隔数组
<?php
$xml = '<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>';
$dom = new DomDocument();
// $dom->load('xml.xml');
$dom->loadXML($xml);
$xpath = new DOMXPath($dom);
$ExTagsArr = array();
foreach ($xpath->evaluate('//item/*') as $i=>$ExTagArr) {
$ExTagsArr[]=$ExTagArr->nodeName;
print_r($ExTagsArr);
}
我得到了奇怪的数组
Array (
[0] => id ) Array (
[0] => id
[1] => title ) Array (
[0] => id
[1] => title
[2] => id ) Array (
[0] => id
[1] => title
[2] => id
[3] => title )
但我只需要
Array
(
[0] => id
[1] => title
)
Array
(
[0] => id
[1] => title
)
<?php
$xml = '
<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>
';
$dom = new DomDocument();
$dom->loadXML($xml);
// Using SimpleXML
$root = simplexml_import_dom($dom);
foreach ($root->xpath('//item') as $item) {
$a = (array) $item;
var_dump($a);
}
// Using plain DOM
foreach ($dom->getElementsByTagName('item') as $item) {
$a = array();
for ($i = 0; $i < $item->childNodes->length; ++$i) {
$child = $item->childNodes->item($i);
if ($child->nodeType == XML_ELEMENT_NODE) {
$a[$child->tagName] = $child->nodeValue;
}
}
var_dump($a);
}
另请参阅 this 答案。
我有Xml个文件
<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>
如何将每个项目 id 和 title 标签名称放入分隔数组
<?php
$xml = '<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>';
$dom = new DomDocument();
// $dom->load('xml.xml');
$dom->loadXML($xml);
$xpath = new DOMXPath($dom);
$ExTagsArr = array();
foreach ($xpath->evaluate('//item/*') as $i=>$ExTagArr) {
$ExTagsArr[]=$ExTagArr->nodeName;
print_r($ExTagsArr);
}
我得到了奇怪的数组
Array ( [0] => id ) Array ( [0] => id [1] => title ) Array ( [0] => id [1] => title [2] => id ) Array ( [0] => id [1] => title [2] => id [3] => title )
但我只需要
Array
(
[0] => id
[1] => title
)
Array
(
[0] => id
[1] => title
)
<?php
$xml = '
<tag>
<item>
<id>106</id>
<title>DG</title>
</item>
<item>
<id>105</id>
<title>AC</title>
</item>
</tag>
';
$dom = new DomDocument();
$dom->loadXML($xml);
// Using SimpleXML
$root = simplexml_import_dom($dom);
foreach ($root->xpath('//item') as $item) {
$a = (array) $item;
var_dump($a);
}
// Using plain DOM
foreach ($dom->getElementsByTagName('item') as $item) {
$a = array();
for ($i = 0; $i < $item->childNodes->length; ++$i) {
$child = $item->childNodes->item($i);
if ($child->nodeType == XML_ELEMENT_NODE) {
$a[$child->tagName] = $child->nodeValue;
}
}
var_dump($a);
}
另请参阅 this 答案。