如何将此代码段传递给函数

时间:2011-07-11 11:48:51

标签: php simplexml

我有这段代码:

$xml->items->item

代表xml树的一些节点...我希望能够将树的这种表示传递给一个公共函数,这样我就可以使用一个通用函数处理略有不同的xml树。问题是我不知道如何传递它...我已经尝试将它作为一个字符串传递然后在我传递给它的函数内反序列化但是这不起作用....任何想法?

3 个答案:

答案 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得到的。