2011-07-18 71 views
0

我已經創建了一個XML文檔。所以,現在我想找到好節點並設置這個節點的值,但在對這個主題進行任何研究之後,我不知道該怎麼做。如何設置XML文件的節點?

這是我的文檔:

<?xml version="1.0" encoding="utf-8"?> 
<scripts> 
    <script nom="myTools.class.php"> 
    <titre>Useful php classes</titre> 
    <date>18/07/2011</date> 
    <options> 
     <option name="topic">Tutorials</option> 
     <option name="desc">Tutorial for you</option> 
    </options> 
    </script> 
    <script nom="index.php"> 
    <titre>blabla</titre> 
    <date>15/07/2011</date> 
    <options> 
    <option name="topic">The homepage</option> 
    </options> 
    </script> 
</scripts 

>

,我就建立與論文值的HTML形式,但在這一刻,我不能獲取和設置,我想: (

我希望得到的第一個「腳本」節點:

<script nom="myTools.class.php"> //How to set the "nom" attribute ? 
    <titre>Useful php classes</titre> //How to get this value and set it ? 
    <date>18/07/2011</date> 
    <options> 
     <option name="topic">Tutorials</option> 
     <option name="desc">Tutorial for you</option> 
    </options> 
    </script> 

我不得不循環中的所有次沒問題e文件,但不是隻有我自己的「選擇」

你有什麼想法嗎?

回答

0

使用XPath的 首先得到DOM文檔

$dom=new DOMDocument(); 
$dom->loadXML('file'); // file is the name of XML file if u have a string of XML called $string then use $dom->loadXML($string) 
$xpath=new DOMXPath($dom); 
$path='//scripts/script[1]'; // that would get the first node 
$elem=$xpath->query($path); 

現在$ elem[0]是你的第一個腳本節點

如果u想要通過屬性獲取元素,然後使用$path='//scripts/script[@nom='attribute value']'; 現在使用此路徑將返回一個節點噸,有烏爾給定值的NOM屬性腳本元素 可以響應bahamut100的評論看到更多的在這裏


中的XPath FOT選項元素是//options/option

現在如果u意味着越來越一個選項節點按屬性值然後這樣做

$path='//options/option[@attrib_name=attrib_value]'; 
$elem=$xpath->query($path); 

但如果你意味着獲得節點的屬性,那麼首先你必須到達該節點。在烏拉圭回合的情況下,u必須達到選項節點首先

$path='//options/option'; 
$option=$xpath->query($path); 

現在$option是一個節點列表 所以獲得的第一個元素的attibutes使用

$attribute=$option[0]->attributes; 

現在$屬性是的NamedNodeMap所以得到第一屬性的值使用

$value=$attribute->item(0); 
+0

謝謝,但如何在「選項」節點的屬性訪問? – bahamut100

+0

你想獲得屬性值或通過屬性值獲取選項節點?我在我的回答中寫道 – lovesh

0

XPath是這樣做的一種方式:

$dom = new DOMDocument(); 
$dom->loadXML(... your xml here ...); 

$xp = new DOMXPath($dom); 
$results = $xp->query('//script[@nom='myTools.class.php']/titre'); 

$old_title = $results[0]->nodeValue; 
$results[0]->nodeValue = 'New title here'; 
+0

好的,謝謝,我會嘗試使用XPath – bahamut100

相關問題