1
我目前在SimpleXML中遇到了一個小問題。我不知道爲什麼,但由於某種原因,它不保存我在XML文件中的更改。編輯XPATH結果不會影響文檔
<?xml version="1.0" encoding="ISO-8859-1"?>
<KW10>
<dienstag date="07.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</dienstag>
<mittwoch date="08.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</mittwoch>
<donnerstag date="09.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</donnerstag>
<freitag date="10.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</freitag>
<samstag date="11.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</samstag>
<sonntag date="12.03.2017">
<arbeitszeit/>
<pausen/>
<kilometer/>
<fahrer/>
<hotel/>
<fahrtzeit_hin/>
<fahrtzeit_weg/>
<erledigt/>
</sonntag>
<montag date="06.03.2017">
<arbeitszeit von="21:00" bis="05:00"/>
<kilometer/>
<fahrer is="true"/>
<hotel/>
<fahrtzeit_hin von="20:30" bis="20:45"/>
<fahrtzeit_weg von="05:15" bis="05:30"/>
<erledigt/>
<pausen>
<pause_0 von="23:30" bis="00:00"/>
</pausen>
</montag>
</KW10>
我想排序的xml文件來獲取平日爲了(按日期)
$xml = simplexml_load_file('users/'.$_SESSION['vorname'].$_SESSION['nachname'].'/'.$kw.'.xml');
$trees = $xml->xpath('//*[@date]');
usort ($trees, function($a, $b) { return strcmp($a['date'], $b['date']); });
echo '<pre>'; print_r($trees); echo '</pre>';
$xml->asXML('kwtest.xml');
輸出是不錯,但由於某種原因,它不會改變我保存到文件,它創建的文件,但與舊的XML樹,所以我想我必須以某種方式應用我的排序樹(當然覆蓋)。
有人在這裏有這個答案嗎?
做'$樹= $ XML的>的XPath後( '// * [@日期]');''$ trees'是一個結果數組沒有連接到'$ xml'。你必須從$樹中創建一個真正的simple_xml對象。 – JustOnUnderMillions
您認爲'SimpleXMLElement :: xpath()'返回的'SimpleXMLElement'對象數組被鏈接到原始的'SimpleXMLElement'。 Docs對此沒有任何說明,這可能太過於假設。 –
在這裏閱讀它是如何完成的:http://stackoverflow.com/questions/23105465/how-to-update-xml-file-using-php在答案中尋找'//用新的替換舊元素' – JustOnUnderMillions