我正在尝试在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}>");
因为字符串有“?&gt;”而php“think”是php标签的结尾。
如何在php字符串中写这两个字符?
答案 0 :(得分: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}/>");
这不是必需的,但保留在这里,因为这是最初的答案。
答案 1 :(得分:0)
只需拆分字符串:
'<' . '?xml ....