我想创建一个结构如下的XML:
<?xml version="1.0" encoding="UTF-8"?>
<content>
<!-- content goes here -->
</content>
我最初是这样创建xml节点的:
$xml = new SimpleXMLElement('<xml/>');
$content = $xml->addChild('content');
// add data to content
但是不允许向xml节点添加属性,所以现在我这样做:
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>'
.'<content></content>');
由于某些原因,如果不添加内容节点,它就不能工作,但无论如何,它的结构是正确的。
现在,我如何像上面那样将内容节点分配给变量,以便可以向其添加数据?
在您的示例中,$xml变量等于内容节点,请尝试以下操作:
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>'
.'<content></content>');
$xml->addAttribute('Attribute', 'value');
$xml->addChild('node_name', 'value');
echo $xml->asXML();
这应该打印
<?xml version="1.0" encoding="UTF-8"?>
<content Attribute="value"><node_name>value</node_name></content>
例如
<?php
$content = new SimpleXMLElement('<content />');
$content['attr']='value';
echo $content->asXML();
打印
<?xml version="1.0"?>
<content attr="value"/>
——编辑:
保持编码=utf-8:
$content = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
<content />');
XML文档必须至少有一个元素。这就是document元素。在你的问题中,这是content元素。
您可以创建一个SimpleXMLElement,只需实例化它的最小字符串:
$xml = new SimpleXMLElement('<content/>');
变量$xml
则表示该元素。你可以…
- …添加属性:
$xml['attribute'] = 'value';
- …设置content-text:
$xml[0] = 'text';
- …add child-elements:
$xml->child = 'value';
这个示例性的排列然后将创建以下XML(美化,也是:在线演示):
<?xml version="1.0"?>
<content attribute="value">
text
<child>value</child>
</content>