php kullanarak XML belgeleri arıyor

1 Cevap php

Ben DOM, PHP ve XML kombinasyonunu kullanarak arama işlevini yapmaya çalışıyorum. Ben bir şey var ve çalışıyor ama sorun bir yöntem, en verimli aldı eğer benim arama fonksiyonu sadece bu merak ediyorum üstüne, kesin koşullarını kabul edecektir

$searchTerm = "Lupe";
$doc = new DOMDocument();
foreach (file('musicInformation.xml')as $node)
{
$xmlString .= trim($node);
}
$doc->loadXML($xmlString);
$records = $doc->documentElement->childNodes;

$records = $doc->getElementsByTagName("musicdetails");
foreach( $records as $record )
{
$artistnames = $record->getElementsByTagName("artistname");
$artistname = $artistnames->item(0)->nodeValue;

$recordnames = $record->getElementsByTagName("recordname");
$recordname = $recordnames->item(0)->nodeValue;

$recordtypes = $record->getElementsByTagName("recrodtype");
$recordtype = $recordtypes->item(0)->nodeValue;

$formats = $record->getElementsByTagName("format");
$format = $formats->item(0)->nodeValue;

$prices = $record->getElementsByTagName("price");
$price = $prices->item(0)->nodeValue;

    if($searchTerm == $artistname|| $searchTerm == $recordname || $searchTerm == $recordtype ||$searchTerm == $format || $searchTerm == $price)
    {
     echo "$artistname - $recordname - $recordtype - $format -$price\n";    
    }

1 Cevap

Karussell dediği gibi, en iyi cevabı bu PHP değil kullanmaktır. Bu sizin için bakabilirim bir kütüphane bulun.

Ancak, bu her zaman bir seçenek olmadığını kabul edersiniz. Aklınızda ile ...

Ben size olması gereken biraz daha ayrıntılı olduğun düşünüyorum. İlk olarak, dosyayı yüklemek için DOMDocument->load($file) yöntemi kullanılarak yapılmalıdır.

Sonra, muhtemelen aradığınız yerine kendinizi arama yapıyorsanız düğümleri seçmek için XPath query kullanmak istiyorsunuz.

Kodunuzu bu gibi bir şey arıyor sona ereceğini:

$searchTerm = "text";

$doc = new DOMDocument();
$doc->load( 'musicInformation.xml' );

$xpath = new DOMXPath( $doc );

$result = $xpath->query(
    '//musicdetails[ .//text()[contains( ., "'. addslashes($searchTerm) .'" )] ]'
);

echo "Found: ". $result->length ."\n";

foreach ( $result AS $node ) {
    echo $doc->saveXML($node) ."\n\n";
}