2010-12-23 29 views
11

我正在尝试使用PHP文档构建一个使用PHP 5的内置SimpleXMLElement类的XML文档(用于AJAX)。我想从一个空白的石板开始,逐个构建XML元素,但是我没有办法构建一个SimpleXMLElement,而没有从现有的一段XML代码开始。我无法成功地将一个空白字符串(“”)传递给构造函数SimpleXMLElement,所以目前我将XML传递给最外层的标记,然后从那里构建。这里是我的代码:如何在PHP中创建一个空/空的SimpleXMLElement?

// Start with a "blank" XML document. 
$xml = new SimpleXMLElement("<feature></feature>"); 

// Add various children and attributes to the main tag. 
$xml->addAttribute("id", $id); 
$xml->addChild("title", $feature['title']); 
$xml->addChild("summary", $feature['summary']); 
// ... 

// After the document has been constructed, echo out the XML. 
echo $xml->asXML(); 

有没有更干净的方法来做到这一点?

+1

您可以使用DOMDocument创建元素并将其转换为SimpleXML,但这甚至更加复杂...... – derekerdmann 2010-12-23 07:30:17

+2

线索在类名中,您正在创建SimpleXML *元素*。至于更干净,`simplexml_import_dom()`是不必要的。除此之外,如果你想通过单个元素/属性来构建文档,那么你拥有的是好的。 – salathe 2010-12-23 08:25:56

回答

5

由于salathe提到:

的线索是在类名,你要创建的SimpleXML 元素

现在我明白了SimpleXMLElement不能是“空的”。它必须是一个有效的XML元素,它必须具有标签名称以及打开和关闭标签(例如<feature></feature><body></body>)。

这似乎意味着SimpleXMLElement是为解析而不是构建XML文档而创建的。话虽如此,我发现从零开始构建文档非常简单。该课程会自动执行许多很好的事情,包括保持一切紧凑并在顶部输出XML版本号(<?xml version="1.0"?>)。

我会向任何需要使用PHP构建小型XML文档的人推荐此方法。它胜过任何一天将标签作为字符串回显出来。

谢谢大家,您的意见!