检测XML中是否存在值

时间:2013-03-18 11:30:10

标签: php xml

尝试计算XML文件中是否存在名称以及有多少次,有人可以帮忙吗? 我已经在使用互联网代码的第35版我已经尝试过但主要是它只计算标签而不是标签之间的内容。

<?php

$xml = <<< XML
<Book>
<Contact>
        <Name>An Smith</Name>
</Contact>
    <Contact>
        <Name>Alex Pepper</Name>
</Contact>
    <Contact>
        <Name>Tom James</Name>
</Contact>
;
</Book>
XML;

$dom = new DOMDocument;
$dom->loadXml($xml);

// to detect, count if variable NameToFind is present
$NameToFind="Alex Pepper";

// Missing code 

echo "$NameToFind is x times present in the XML ";

完成所有评论的一些尝试,最后这是我需要的工作代码:

$xml=simplexml_load_file('book.xml'); 
$nodes= $xml->xpath("//Book/Contact[contains(.,'$NameToFind')]");
$count = count($nodes);

3 个答案:

答案 0 :(得分:0)

可能是这样的:

$xpath = new DOMXPath($dom);
$query = '//Book/Contact/Name[. = "' . $NameToFind . '"]';
$entries = $xpath->query($query);
$count = count($entries);

虽然我的xpath查询可能有些偏差。

答案 1 :(得分:0)

我认为这就是你所追求的目标。

https://stackoverflow.com/a/10162624/736639

另一种选择是使用xml2array库将XML转换为数组:http://www.bin-co.com/php/scripts/xml2array/

$array = xml2array($xmlstring);

答案 2 :(得分:0)

$xml=simplexml_load_file('book.xml'); 
$nodes= $xml->xpath("//Book/Contact[contains(.,'$NameToFind')]");
$count = count($nodes);