2016-02-29 23 views
1

不工作節點我似乎無法想出解決辦法...取下的XML PHP

我有這樣的XML:

<?xml version="1.0" encoding="utf-8"?> 
<report> 
    <report-name name="SEARCH_QUERY_PERFORMANCE_REPORT"/> 
    <date-range date="Jan 1, 2016-Jan 31, 2016"/> 
    <table> 
     <columns> 
      <column name="campaignID" display="Campaign ID"/> 
      <column name="campaign" display="Campaign"/> 
      <column name="adGroupID" display="Ad group ID"/> 
      <column name="campaignState" display="Campaign state"/> 
      <column name="keyword" display="Keyword"/> 
      <column name="searchTerm" display="Search term"/> 
      <column name="convertedClicks" display="Converted clicks"/> 
      <column name="impressions" display="Impressions"/> 
      <column name="clicks" display="Clicks"/> 
      <column name="ctr" display="CTR"/> 
      <column name="avgCPC" display="Avg. CPC"/> 
      <column name="avgPosition" display="Avg. position"/> 
      <column name="cost" display="Cost"/> 
      <column name="device" display="Device"/> 
     </columns> 
     <row device="Mobile devices with full browsers" cost="3940000" avgPosition="2.0" avgCPC="3940000" ctr="100.00%" clicks="1" impressions="1" convertedClicks="0" searchTerm="purple jeep near elgin for sale" keyword="jeepdealership" campaignState="enabled" adGroupID="7751248218" campaign="Zeigler CDJ_Dealer Campaign" campaignID="134270778"/> 
     <row device="Mobile devices with full browsers" cost="3930000" avgPosition="1.0" avgCPC="3930000" ctr="100.00%" clicks="1" impressions="1" convertedClicks="0" searchTerm="jeep wrangler rubicon 2015" keyword="jeepdealership" campaignState="enabled" adGroupID="7751248218" campaign="Zeigler CDJ_Dealer Campaign" campaignID="134270778"/> 
     <row device="Mobile devices with full browsers" cost="2010000" avgPosition="3.0" avgCPC="2010000" ctr="100.00%" clicks="1" impressions="1" convertedClicks="0" searchTerm="altitute jeep cherokee" keyword="2015 jeep Cherokee" campaignState="enabled" adGroupID="18188246418" campaign="Zeigler CDJ_Targeted Campaign" campaignID="134270898"/> 
     <row device="Mobile devices with full browsers" cost="3990000" avgPosition="1.0" avgCPC="3990000" ctr="100.00%" clicks="1" impressions="1" convertedClicks="0" searchTerm="2012 jeep cherokee" keyword="2015 +Jeep +cherokee" campaignState="enabled" adGroupID="18188246418" campaign="Zeigler CDJ_Targeted Campaign" campaignID="134270898"/> 
    </table> 

我需要刪除一些節點(和他們的孩子)在Xml中。我正在使用下面的代碼:

$doc = new DOMDocument; 
$doc->load('qreport.xml'); 
$node = $doc->documentElement; 
// Retrieve the sub-nodes and remove from xml 
$subnodes = $node->getElementsByTagName('columns')->item(0); 
$remnodes = $node->removeChild($subnodes); 
echo $doc->saveXML(); 

因此,當把這個爲節點名稱,它們被刪除。舉例來說,此代碼的工作,我可以刪除和它的孩子,我可以刪除報告名稱日期範圍

但我不能刪除及其子。

不清楚我做錯了什麼。

回答

1
$subnodes = $node->getElementsByTagName('columns')->item(0); 
$remnodes = $node->removeChild($subnodes); 

您必須在$ somenode的直接父項上調用->removeChild($somenode)。 元素<columns><table>的子元素,而不是documentElement(== $ node)<report>的子元素。

嘗試

$subnodes = $node->getElementsByTagName('columns'); 
if ($subnodes && $subnodes->length > 0) { 
    $subnodes = $subnodes->item(0); 
    $remnodes = $subnodes->parentNode->removeChild($subnodes); 
} 

代替。
另請參閱:http://docs.php.net/class.domnode#domnode.props.parentnode

+0

好吧 - 我現在明白了 - 這個作品很好 - 謝謝! – PiE