我认为这项任务并不难,但看起来我无法理解......
这是我的数据:
$_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:变量本身存储在文件中,而不是它们的值......
你能帮我把事情做好吗?
注意:重要的是,在运行其他注册时,此代码会再次生效,不会删除或覆盖任何内容,只需添加上面发布的其他结构
提前致谢!
答案 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中它有两部分:
createElement()
,createTextNode()
等appendChild()
方法创建节点。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();
,... 此外,您可以使用节点的属性和方法进行更改。
$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是有限的,只允许你访问它的一部分。