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
$xml=simplexml_load_file('book.xml'); 
$nodes= $xml->xpath("//Book/Contact[contains(.,'$NameToFind')]");
$count = count($nodes);
于 2013-03-18T21:59:43.570 に答える
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 に答える