仅当另一个节点值> 1时,使用PHP DOM提取某个节点值。 0

时间:2014-07-19 16:00:30

标签: php xml dom

我使用php dom从另一个平台解析xml,从中提取某些数据,然后上传到我自己的平台。但是,当涉及到提取某个节点值时,我才会被卡住,只有当子节点“row”的另一个节点值大于0时。在下面的示例中,我想迭代xml并仅在CPACommission节点值大于0时拉出'affcustomid'值。有没有人有任何想法我怎么能这样做?下面的代码是一个缩短的版本,实际上,我会以与下面相同的格式返回100行。

<row>
<rowid>1</rowid>
<currencysymbol>&#8364;</currencysymbol>
<totalrecords>2145</totalrecords>
<affcustomid>11159_4498302</affcustomid>
<period>7/1/2014</period>
<impressions>0</impressions>
<clicks>1</clicks>
<clickthroughratio>0</clickthroughratio>
<downloads>1</downloads>
<downloadratio>1</downloadratio>
<newaccountratio>1</newaccountratio>
<newdepositingacc>1</newdepositingacc>
<newaccounts>1</newaccounts>
<firstdepositcount>1</firstdepositcount>
<activeaccounts>1</activeaccounts>
<activedays>1</activedays>
<newpurchases>12.4948</newpurchases>
<purchaccountcount>1</purchaccountcount>
<wageraccountcount>1</wageraccountcount>
<avgactivedays>1</avgactivedays>
<netrevenueplayer>11.8701</netrevenueplayer>
<Deposits>12.4948</Deposits>
<Bonus>0</Bonus>
<NetRevenue>11.8701</NetRevenue>
<TotalBetsHands>4</TotalBetsHands>
<Product1Bets>4</Product1Bets>
<Product1NetRevenue>11.8701</Product1NetRevenue>
<Product1Commission>30</Product1Commission>
<Commission>0</Commission>
<CPACommission>30</CPACommission>
</row>

提前致谢! 标记

2 个答案:

答案 0 :(得分:1)

从XML DOM获取数据的最简单方法是Xpath:

$dom = new DOMDocument();
$dom->load('file.xml');
$xpath = new DOMXpath($dom);

var_dump(
  $xpath->evaluate('string(//row[CPACommission > 0]/affcustomid)')
);

答案 1 :(得分:0)

使用SimpleXML会更容易:

$doc = simplexml_load_file('file.xml');
foreach ($doc->row AS $row) { 
    if($row->CPACommission > 0){
        echo $row->affcustomid;
    }
}

但是如果你仍然需要使用DOMDocument:

$doc = new DOMDocument();
$doc->load('file.xml');
foreach ($doc->getElementsByTagName('row') AS $row) { 
    if($row->getElementsByTagName('CPACommission')->item(0)->textContent > 0){
        echo $row->getElementsByTagName('affcustomid')->item(0)->textContent;
    }
}