检测XML格式的值是否存在


Detect if value in XML is present

试着计算一个名字是否在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);

可能是这样的:

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

虽然我的xpath查询可能有点偏离。

我想这就是你想要的。

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

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

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