PHP SimpleXMLElement问题与xml节点


PHP SimpleXMLElement problems with xml node

我想创建一个结构如下的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>