2012-10-02 40 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結構都是靜態的。但在我的情況下,這些層次是動態的,即可能有無限的「容器」節點。所以指定節點路徑'$電影 - >電影 - >字符 - >字符'是不可能的。 –