2012-10-02 113 views
-1

可能重复:
A simple program to CRUD node and node values of xml file更新XML节点在PHP

我无法在一个XML文件更新节点。我的XML文件是这样的:

<container id="header"> 
     <widgetname="header" cache='true' cachetime='7200' ><parameter name="image" value="gnome"></parameter></widget> 
    </container> 

    <container id="nav_wrapper">  
     <container id="main_menu_container"> 
      <widget name="menu"> 
       <parameter name="menuid" value="9"></parameter> 
      </widget> 
     </container> 
     <container id="search_wrapper"> 
      <widget name="search" cache='true' cachetime='7200' ></widget> 
     </container> 
    </container> 

    <container class="subpage_wrapper"> 
     <container id="leftcol"> 
      <container class="subnav"> 
       <widget name="menu"> 
        <parameter name="menuid" value="5"></parameter> 
       </widget> 
      </container> 
     </container> 
     <container id="rightcol"> 
      <page name="articlelist"></widget> 
     </container> 
    </container> 
</container> 
</layout> 

整个页面布局将根据该XML,这是正常渲染。当管理员必须更新参数到小部件时,麻烦就开始了。为此,我提供了一个预览布局,管理员可以选择这些小部件的参数。

例如,当管理点击container>topbar>top_nav>menu小部件的配置时,他将被提供所有可用的选项。但我还没有找到任何解决方案将新选定的值保存到该节点。
有没有人有任何想法如何做到这一点?

[编辑]主要问题是子元素可以是无限的。也可能有多个同一路径的子项容器>容器>小部件将在xml中重复可能的时间

回答

1

在PHP中编辑XML有很多选项。请参阅PHP DOMSimpleXML

SimpleXML文档有很多示例。其中一个例子是writing values to the XML document

+0

我检查了这两个链接。它都没有显示如何到达指定的节点,特别是在像上面这样的xml结构中。你能提供一些代码片段或解释它的一些链接吗? –

+0

您是否看到我的第三个链接?它有很多代码示例。我认为写价值的人会有所帮助。 http://www.php.net/manual/en/simplexml.examples-basic.php#example-5150 – jimp

+0

谢谢@ jimp。这些例子帮助我更新了xml中的节点属性。但我仍然有一个问题找到正确的节点进行更新。在所有这些例子中,xml结构都是静态的。但在我的情况下,这些层次是动态的,即可能有无限的“容器”节点。所以指定节点路径'$电影 - >电影 - >字符 - >字符'是不可能的。 –