我有这段代码:
$xml->items->item
代表xml树的一些节点...我希望能够将树的这种表示传递给一个公共函数,这样我就可以使用一个通用函数处理略有不同的xml树。问题是我不知道如何传递它...我已经尝试将它作为一个字符串传递然后在我传递给它的函数内反序列化但是这不起作用....任何想法?
答案 0 :(得分:1)
传递$xml->items
和字符串“item”。然后,为每个项目解析“item”属性。
答案 1 :(得分:1)
也许我错过了这一点,但“我希望能够将树的这种表示传递给一个共同的函数” - 然后只是传递它......
<?php
function foo(SimpleXMLElement $r) {
foreach( $r as $e ) {
printf('[%s; %s; %s] ', $e->x, $e->y, $e->z);
}
echo "\n";
}
$xml = getDoc();
// the <a><b> subtree
foo($xml->b->items->item);
echo "---------------------\n";
// same function for the the <a><c> subtree
foo($xml->c->items->item);
function getDoc() {
return new SimpleXMLElement( <<< eox
<a>
<b>
<items>
<item><x>10</x><y>11</y><z>12</z></item>
<item><x>20</x><y>21</y><z>22</z></item>
</items>
</b>
<c>
<items>
<item><x>99</x><y>98</y><z>97</z></item>
<item><x>96</x><y>95</y><z>94</z></item>
</items>
</c>
</a>
eox
);
打印
[10; 11; 12] [20; 21; 22]
---------------------
[99; 98; 97] [96; 95; 94]
答案 2 :(得分:0)
您是否尝试将其作为$xml->items->item->nodeValue
传递?
我是从php.net得到的。