首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -插入XML文件和从XML文件获取

PHP -插入XML文件和从XML文件获取
EN

Stack Overflow用户
提问于 2015-04-30 05:34:44
回答 1查看 43关注 0票数 0

我使用JSON为聊天系统编写了以下代码:

代码语言:javascript
复制
header('Content-type: application/json');

$theName = $_GET['name'];
$theMessage = $_GET['message'];

$str = file_get_contents("transactions.json");

if ($str == ""){
     $str = '[]';
}

$arr = json_decode($str, true);

$arrne['name'] = "$theName";
$arrne['message'] = "$theMessage";

array_push($arr, $arrne);   

$aFinalTransaction = json_encode($arr, JSON_PRETTY_PRINT);
echo $aFinalTransaction;

file_put_contents("transactions.json", "$aFinalTransaction");

这将获取事务文件的内容,对其进行解码,插入从$_GET获取的名称和消息,将其推入数组,并将其编码回字符串,然后将其放入事务文件中。

这可以很好地工作,但是我需要为XML而不是JSON做完全相同的事情。因此,文件中的字符串将如下所示:

代码语言:javascript
复制
<chatMessage>
 <name>Name1</name>
 <message>Msg1</message>
</chatMessage>
<chatMessage>
 <name>Name2</name>
 <message>Msg2</message>
</chatMessage>

这是它现在在JSON中的样子:

代码语言:javascript
复制
[
    {
        "name": "Name1",
        "message": "Msg1"
    },
    {
        "name": "Name2",
        "message": "Msg2"
    }
]

另外,还有一件事,我到底该如何命名该JSON对象?所以它看起来就像这样:

代码语言:javascript
复制
{"messages":[
    {
        "name": "Name1",
        "message": "Msg1"
    },
    {
        "name": "Name2",
        "message": "Msg2"
    }
]}

最后这一部分可能比我想象的要简单,但我没有任何运气。

我真的希望你能帮助我。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 05:40:31

如果你想把你的“消息”放在这个名字的元素下,你只需要确保你的数组遵循这个格式。您也没有定义数组,您需要首先将其设置为一个$arrne (),您可以将其简化如下所示。

代码语言:javascript
复制
$str = file_get_contents( "transactions.json" );

// check if $str is a blank string, false, null, etc
if ( empty( $str ) ){
    // it's empty so create an array
    $arr = array();
} else {
    // it's not empty so decode the JSON string
    $arr = json_decode( $str, true );
}

// use isset() to avoid undefined index warnings
array_push( $arr, array(
    'name' => isset( $_GET['name'] )? $_GET['name'] : "",
    'message' => isset( $_GET['message'] )? $_GET['message'] : "",
) ); 

// assign to a new array with all the messages under the key "messages"
$result = array( 'messages' => $arr );

// convert array to JSON. see comment above for converting to XML with SimpleXML
$json = json_encode( $result, JSON_PRETTY_PRINT );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29955009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档