-3

我正在尝试在 php 中创建一个 ArrayToXML 转换器。

我有这个代码:

function assocArrayToXML($root_element_name,$ar) {

         $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}></{$root_element_name}>");

         $f = create_function('$f,$c,$a','
            foreach($a as $k=>$v) {
                       if(is_array($v)) {
                $ch=$c->addChild($k);
                $f($f,$ch,$v);
            } else {
                $c->addChild($k,$v);
            }
        }');
        $f($f,$xml,$ar);
        return $xml->asXML();
}

来自http://php.net/manual/es/book.simplexml.php

我遇到的问题是这一行:

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}></{$root_element_name}>");

因为字符串有“?>”,而 php 的“thinks”是 php 标签的结尾。

如何在 php 字符串中写入这两个字符?

4

2 回答 2

1

从您的问题中不清楚您的问题出在哪里,您可以逐字使用您的代码(Demo):

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}/>");

对于 simplexml,这实际上等于以下较短的行(您可能更喜欢):

$xml = new SimpleXMLElement("<{$root_element_name}/>");

SimpleXML 自己添加了 XML 序言,因此您无需编写它。

逃脱字符,所以它变成

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?\><{$root_element_name}/>");

这不是必需的,但保留在这里,因为它是原始答案。

于 2013-02-28T15:59:39.507 回答
0

只需拆分字符串:

'<' . '?xml ....
于 2013-02-28T15:57:34.947 回答