2014-04-08 70 views
0

我試圖設置所有元素的具有屬性「布爾」的給定XML文件的值爲True,我有一個地獄的時間計算如何做到這一點:將屬性的所有元素設置爲一個特定的值

$dom = new DOMDocument('1.0'); 
    $dom->preserveWhiteSpace = false; 
    $dom->formatOutput = true; 
    $dom->loadXML($sxe->asXML()); 
    $xpath = new DOMXPath($dom); 
    foreach ($xpath->query('//*[@type="Boolean"]') as $node) { 
      // something to set the value of $node to the value of "True" 
      } 
    echo $dom->saveXML(); 

我已經試過:

$node->{0} = value; // does not actually replace values but doesn't error 
$node[0] = value; // errors Cannot use object of type DOMElement as array 

此外,如果任何人都知道,我怎麼能告訴DOM不輸出使用簡寫的XML?

回答

1

你試圖改變attribute值,所以使用setAttribute

foreach ($xpath->query('//*[@type="Boolean"]') as $node) { 
      $node->setAttribute('type', 'True'); 
      } 

更新:

foreach ($xpath->query('//*[@type="Boolean"]') as $node) { 
       $node->nodeValue = 'true'; 
       } 

爲了您的空標籤的問題,我假設這是產生這些標籤ISN代碼在你發佈的內容中,但是當創建/添加新元素時,請使用空參數而不是完全刪除它,即:

addChild('elementname', '') 

代替

addChild('elementname') 
+0

不,我想設置元素的值。屬性僅用於查找要更改的元素。 – VikingBlooded

+0

哦,那麼使用'$ node-> nodeValue = value' – JWiley

+0

正確,謝謝先生。你有沒有機會知道如何告訴DOM輸出XML而不使用簡寫XML標籤? – VikingBlooded

相關問題