【问题标题】:PHP SimpleXMLElement problems with xml nodexml节点的PHP SimpleXMLElement问题
【发布时间】:2015-11-11 02:34:55
【问题描述】:

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

由于某种原因,如果不添加内容节点,它就无法工作,但无论如何,它的结构是正确的。

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

【问题讨论】:

    标签: php xml


    【解决方案1】:

    例如

    <?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 1.0版默认编码是UTF-8,所以没必要“保留”它:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      一个 XML 文档必须至少有一个元素。那是文档元素。在您的问题中,这是 content 元素。

      你可以创建一个SimpleXMLElement,只需用这个最小字符串实例化它:

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

      然后变量$xml 表示该元素。然后你可以...

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

      然后,这个示例性阵容将创建以下 XML(美化,也:online demo):

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

      【讨论】:

        猜你喜欢
        • 2013-07-13
        • 2013-11-05
        • 2012-12-30
        • 2015-01-06
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 2014-10-19
        相关资源
        最近更新 更多