2015-06-28 119 views
1

使用PHP我想更改節點中的值,其中屬性是我指定的值。 XML文件:XML更改值屬性爲

<?xml version='1.0' standalone='yes'?> 
 
<days> 
 
<Maandag \t id="1">0</Maandag> 
 
<Dinsdag \t id="2">0</Dinsdag> 
 
<Woensdag \t id="3">0</Woensdag> 
 
<Donderdag \t id="4">0</Donderdag> 
 
<Vrijdag \t id="5">0</Vrijdag> 
 
<Zaterdag \t id="6">0</Zaterdag> 
 
<Zonday \t id="0">0</Zonday> \t 
 
</days>

例如: 今天是星期一所以jddayofweek(0)= 1 然後與ID = 1層的需要的節點的值來改變,所以在最終我們得到:

<?xml version='1.0' standalone='yes'?> 
 
<days> 
 
<Maandag \t id="1">3</Maandag> 
 
<Dinsdag \t id="2">0</Dinsdag> 
 
<Woensdag \t id="3">0</Woensdag> 
 
<Donderdag \t id="4">0</Donderdag> 
 
<Vrijdag \t id="5">0</Vrijdag> 
 
<Zaterdag \t id="6">0</Zaterdag> 
 
<Zonday \t id="0">0</Zonday> \t 
 
</days>

如何在PHP中執行此操作?

回答

0

我建議simpleXML,因爲它是 - 好 - 簡單

$xml = simplexml_load_string($x); // assume XML in $x 
$id = 1; 

$day = $xml->xpath("*[@id=`$id`]")[0]; 
$day[0] = 5; 

看到的結果是:

echo $xml->asXML(); 

評論:

  • the xpath -expression will select the day by $id and give back the array of SimpleXML -elements。
  • 選擇第1個要素(指數[0])並將其存儲在$day(需要PHP> = 5.4)

看到它的工作:https://eval.in/388827

思考進一步

如果你作出這樣的XML,通過使其如此變得更加清晰和靈活:

<days> 
    <day name="Maandag" id="1">0</day> 
    <day name="Dinsdag" id="2">0</day> 
    <etc /> 
</days> 
1

您可以使用DOMdocumentDOMpath更改它只需更改xml文件名data.xml(2x)。設置爲$select$changeTo

<?php 

//Set your variables 
$select = 1; //id you'd like to change 
$changeTo = 3; //value you would like to change to 

//Creating a new DOMDocument 
$xmlDoc = new DOMDocument(); 

//from file 
$xmlDoc->load("data.xml"); 

//Creating a new DOMPath 
$Xpath = new DOMXPath($xmlDoc); 

//the query selects all Matches any element node (*) that have a "id" attribute with a value of $select 
$results = $Xpath->query('*[@id=' . $select . ']'); 

//Change node 
$results->item(0)->nodeValue = $changeTo; 

//Save document 
$xmlDoc->save("data.xml"); 

echo "Edited document saved!" 

?> 
-1

如果你的文件總是很小,類似的內容(如你的例子),你可以的preg_replace()他們(或者str_replace()函數)......最好的解決辦法是寫自己的XML解析器,這是對於所有程序員來說,這是一個很好的儀式。

http://php.net/manual/en/book.xml.php