PHP SimpleXMLElement与xml节点有关

时间:2015-08-18 08:44:07

标签: php xml

我想创建一个具有以下结构的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>');

由于某些原因,如果没有添加内容节点它就无法工作,但无论如何,它都能使结构正确。

现在,如何将内容节点分配给变量,就像我上面那样,所以我可以向其添加数据?

3 个答案:

答案 0 :(得分:1)

E.g。

<?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 />');

答案 1 :(得分:1)

在您的情况下,$ 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>

答案 2 :(得分:1)

XML文档必须至少包含一个元素。那是文档元素。在您的问题中,这是内容元素。

您可以通过使用此最小字符串对其进行实例化来创建 SimpleXMLElement

$xml = new SimpleXMLElement('<content/>');

变量$xml则代表该元素。那么你可以......

  • ...添加属性:$xml['attribute'] = 'value';
  • ...设置内容文字:$xml[0] = 'text';
  • ...添加子元素:$xml->child = 'value';

这个示例性的阵容然后会创建以下XML(美化,同样:online demo):

<?xml version="1.0"?>
<content attribute="value">
  text
  <child>value</child>
</content>