2012-10-17 18 views
1

就像我在php腳本中需要幫助的標題獲取「name」節點值,如果它等於指定的給定值;更改「比率」節點值具有相同的「人員」父節點。 xml文件「rate.xml」像下面如果php腳本等於指定值,它將獲取節點值;更改一個節點的值有它的同一父節點

<?xml version="1.0"?> 
<user> 
<person> 
<name>jessy</name> 
<rate>2</rate> 
</person> 
<person> 
<name>mice</name> 
<rate>5</rate> 
</person> 
</user> 

腳本將與此類似

<?php 
$name = $_POST['name']; 
$like = $_POST['like']; 

$doc = new DOMDocument(); 

libxml_use_internal_errors(true); 

$doc->loadXML(file_get_contents ('rate.xml')); 

$xpath = new DOMXPath($doc); 

$nlist = $xpath->query("//user/person/rate"); 

$node = $nlist->item(0); 

$newval = trim($node->nodeValue)-1; 

$node->nodeValue = $newval; 

file_put_contents ('rate.xml', $doc->saveXML()); 


?> 

我缺少的部分是「如果」條件檢查名稱等於名稱如何打字我傳遞給「POST」以及如何將更改限制爲「POST ['name']」值在此「name」節點之後的「rate」節點。 實施將是一個很大的幫助 親切的問候:)

回答

1

你可以做這個

$name = "jessy"; 
$xml = '<?xml version="1.0"?> 
<user> 
<person> 
<name>jessy</name> 
<rate>2</rate> 
</person> 
<person> 
<name>mice</name> 
<rate>5</rate> 
</person> 
</user>'; 

$xml = new SimpleXMLElement($xml); 
for($i = 0; $i < count($xml->person); $i ++) { 
    if ($xml->person[$i]->name == $name) { 
     $xml->person[$i]->rate = $xml->person[$i]->rate - 1; 
    } 
} 
echo $xml->asXML(); 

輸出

<?xml version="1.0"?> 
<user> 
    <person> 
     <name>jessy</name> 
     <rate>1</rate> <----- Modified rate for jessy 
    </person> 
    <person> 
     <name>mice</name> 
     <rate>5</rate> 
    </person> 
</user> 
+1

** + 1 ** ...很好做。 – ghoti

相關問題