0

尝试计算 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);
4

3 回答 3

0

大概是这样的:

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

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

于 2013-03-18T11:38:48.970 回答
0

我想这就是你所追求的。

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

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

$array = xml2array($xmlstring);
于 2013-03-18T11:48:14.453 回答
0
$xml=simplexml_load_file('book.xml'); 
$nodes= $xml->xpath("//Book/Contact[contains(.,'$NameToFind')]");
$count = count($nodes);
于 2013-03-18T21:59:43.570 回答