我非常喜欢PHP中的新XML,并且希望你聪明的人能够帮助我。让我们说我有一个充满用户的xml文档。让我举一个用户的例子:
<user name="Cajs">
<email>mail@cajs.co.uk</email>
<server>Alpha</server>
<referral>VQxwf3Wq4PS5WOqhljTDPUbA</referral>
<limit>10</limit>
<ips />
<network id="EsperNet" created="1388534400"/>
<network id="DALnet" created="1388534400"/>
<network id="Freenode" created="1388534400"/>
<network id="OnlineGamesNet" created="1388534400"/>
<network id="PonyChat" created="1388534400"/>
<network id="QuakeNet" created="1388534400"/>
<network id="Rizon" created="1388534400"/>
<network id="YourBNC" created="1388534400"/>
<network id="AthemeNet" created="1406458342"/>
</user>
我如何计算&#34; ALL&#34;的网络总数?拥有服务器Alpha的用户。
感谢您的帮助!
*更新* 请将删除的=部分添加到标记时,它是否可以忽略,例如:
答案 0 :(得分:0)
您可以借助XPath解决此问题:
$xml = simplexml_load_string($xml);
$results = array();
foreach($xml->xpath('//user[server[.="Alpha"]]') as $user) {
$results[] = array(
'name' => (string)$user->attributes()->name,
'network_count' => $user->network->count()
);
}
var_dump($results);
答案 1 :(得分:0)
$xml = simplexml_load_string($xmlString);
$countUsers = 0;
for( $i = 0; $i < $xml->count(); $i++ ) {
if( $xml->user[$i]->server == 'Alpha' )
$countUsers++;
}
var_dump($countUsers);
答案 2 :(得分:0)
使用DomDocument,它只会是:
$xpath->query('//user[server[text()="Alpha"]]/network')->length;
我确信它在simplexml中是一样的但我从不使用那个lib。
第二部分是:
$xpath->query('//user[not(@removed) and server[text()="Alpha"]]/network')->length;