• thinkphp 操作xml格式


    前言:虽然xml的格式看起来跟html差不多,但是最近做项目由于用的是thinkphp5.0的版本,做的过程中还是遇到了一些问题。在这里做一下记录。

    首先我们需要定义一个dom对象,我们都知道 php中是这样来写的

    > $dom = new DOMDocument(); 

    可是这时候就报错了,第一步就卡住了,别说进行下面的DOM操作了

    于是我翻了thinkPHP5.0手册,手册上倒是提了句关于命名空间,

    如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上

    $xml = new SimpleXmlElement($xmlstr);

    可惜我当时脑子愚笨,并没有受启发,后来翻了好些博客,才终于看到

    > $dom = new DOMDocument();

    好了。DOM对象终于有了,终于可以操作DOM了

    $dom->loadXML($xmlStr);    //将xml字符串转换为xml文档
    
    $link = $dom->getElementByTagName('MobileNoteLink');
    
    $Item = $dom->createElement('MobileNodeItem);
    
    $Item->setAttribute('to',$param['to']);
    
    $link->appendChild($Item);

    然后看了一下,嘿,咋又报错了,我这啥都没干,就是基本的DOM操作啊,,,

    这一下可是费了好久的时间才找到问题

    > $link = $dom->getElementByTagName('MobileNoteLink')->item(0);

    你得获取到特定的那个标签元素,不然他就会把所有的标签都获取到,成了一个集合

    最后一步,因为这是后台操作XML,数据库的值呢是xml格式的,我也是第一次碰到这样的情况,还是经验太少,嘻嘻

    需要将xml文档转换为xml格式字符串

    $newXML = $dom->saveXML();

    再之后将字符串插入数据库就行了。

    -------------------------------------------------------------------------------------------------------------------------------

    用上述这种方式,在linux下需要安装php,编译 ./configure时安装相关的xml库

    所以,可以使用另一种在thinkphp下也可以处理xml     simplexml_load_string()将xml字符串转换为xml对象

    添加: addChild(),为节点添加属性直接 item['content']

    删除: unset($xml->MobileLink) 删除对应节点

    编辑:

    $xml->MobileLink->MobileItem['Content'] = $param['content']
    

      

  • 相关阅读:
    程序的机器级表示(一)
    virtual memory(1)
    Python定义参数数量可变的method的问题
    存储器结构层次(四)
    CAShapeLayer
    cell
    远程服务器推送
    keyboad
    search搜索
    Cocoopod
  • 原文地址:https://www.cnblogs.com/hsprout/p/6497911.html
Copyright © 2020-2023  润新知