使用PHP

时间:2016-11-25 23:44:52

标签: php xml elements children

我认为这项任务并不难,但看起来我无法理解......

这是我的数据:

        $_SESSION["username"]
        $_SESSION["id"]

我希望在注册时将这些文件存储在名为accounts.xml的XML文件中。这个问题不是关于整个过程,我只是想知道如何存储这个正确的。在这个过程之后,我想在我的XML文件中使用这些新结构:

       <account>
           <username>  value of $_SESSION["username"]  </username>
           <user_id>  value of $_SESSION["id"]  </user_id>
       </account>

这是我目前使用的代码:

        $xml = simplexml_load_file('accounts.xml');

        $new = new SimpleXMLElement("<account></account>");
        $new->addChild('username', '$_SESSION["username"]');
        $new->addChild('user_id', '$_SESSION["id"]');

        file_put_contents('accounts.xml', $xml->asXML());

我尝试了一些变化,但通常我最终得到类似的东西:

       <username>  $_SESSION["username"]
          <user_id>  $_SESSION["id"]  </user_id>
       </username>

正如您所看到的,我有多个问题:

1:&lt;帐户&gt;元素甚至没有创建。 2:user_id在用户名内 - 我不想这样 和3:变量本身存储在文件中,而不是它们的值......

你能帮我把事情做好吗?

注意:重要的是,在运行其他注册时,此代码会再次生效,不会删除或覆盖任何内容,只需添加上面发布的其他结构

提前致谢!

2 个答案:

答案 0 :(得分:1)

function suman {

   __handle_global_suman "--inspect --debug-brk" "$@"

}

function __handle_global_suman {

   # ${1} is "--inspect --debug-brk"
   # ${2} is whatever I passed to the suman function
   node ${1}  ${Z}/cli.js ${2};

}

解决

答案 1 :(得分:1)

我强烈建议使用DOM或XMLWriter来创建XML。 Apis更清洁,更强大。在DOM中它有两部分:

  1. 使用createElement()createTextNode()appendChild()方法创建节点。
  2. 使用insertChild()$document = new DOMDocument(); $account = $document ->appendChild($document->createElement('account')); $account ->appendChild($document->createElement('username')) ->appendChild($document->createTextNode('John Doe')); $account ->appendChild($document->createElement('user_id')) ->appendChild($document->createTextNode(42)); $document->formatOutput = TRUE; echo $document->saveXml(); ,...
  3. 将节点添加到其父级(文档或元素)

    此外,您可以使用节点的属性和方法进行更改。

    $writer = new XMLWriter();
    $writer->openMemory();
    $writer->setIndent(true);
    $writer->startDocument('1.0', 'utf-8');
      $writer->startElement('account');
        $writer->writeElement('username', 'John Doe');
        $writer->writeElement('user-id', 42);
      $writer->endElement();
    $writer->endDocument();
    echo $writer->outputMemory();
    

    XMLWriter的:

    agent_alias

    您必须记住,XML文档中的任何内容都是节点。一个元素,属性,cdata部分等.SimpleXML是有限的,只允许你访问它的一部分。