function editSitemap ( $map, $path, $node, $value = NULL, $namespace = NULL, $DOM = NULL ) {
$xml = $this->Sitemaps[$map]['content'];
if ( $namespace != NULL && $DOM == TRUE ) {
$sd = dom_import_simplexml($cur);
$newNode = $sd->ownerDocument->createElement($node . ':' . $namespace, $value);
$newNode = $sd->appendChild($newNode);
} elseif ( $path == NULL ) {
$xml->addChild( $node , $value, $namespace );
} else {
$xml->$path->addChild( $node , $value, $namespace );
}
$this->Sitemaps[$map]['content']->asXML($this->Sitemaps[$map]['path']);
}
所以在这里我需要$ xml-> $ path如下:$ xml-> url [2]当simpleXML在我调用时使用它:editSitemap('compare','url [1]', 'loc','http://truefoodlooks.com/usercp.php',NULL);
或者我需要$ xml-> $ path如下所示:$ xml-> url [2] - >当我调用simpleXML时使用它:editSitemap('compare','url [1] - > loc','name','user cp',NULL);
任何想法如何做到这一点?
由于 纳特
@PaulPRO得到了它:
function editSitemap ( $map, $path, $node, $value = NULL, $namespace = NULL, $DOM = NULL ) {
$xml = $this->Sitemaps[$map]['content'];
if ( $path != '' ){
eval('$cur = $xml->'.$path.';');
} else {
$cur = $xml;
}
if ( $namespace != NULL && $DOM == TRUE ) {
$sd = dom_import_simplexml($cur);
$newNode = $sd->ownerDocument->createElement($node . ':' . $namespace, $value);
$newNode = $sd->appendChild($newNode);
} else {
$cur->addChild( $node , $value, $namespace );
}
$this->Sitemaps[$map]['content']->asXML($this->Sitemaps[$map]['path']);
}
答案 0 :(得分:1)
修改
我之前使用{$path}
的解决方案不起作用。事实上,我认为如果不使用eval ......这是不可能的:(这是eval的解决方案:
function editSitemap ( $map, $path, $node, $value = NULL, $namespace = NULL, $DOM = NULL ) {
$xml = $this->Sitemaps[$map]['content'];
if ( $namespace != NULL && $DOM == TRUE ) {
$sd = dom_import_simplexml($cur);
$newNode = $sd->ownerDocument->createElement($node . ':' . $namespace, $value);
$newNode = $sd->appendChild($newNode);
} elseif ( $path == NULL ) {
$xml->addChild( $node , $value, $namespace );
} else {
eval('$xml->'.$path.'->addChild( $node , $value, $namespace);');
}
$this->Sitemaps[$map]['content']->asXML($this->Sitemaps[$map]['path']);
}