Php ve XPath ile xml ayrıştırma

2 Cevap php

I'm trying to parse an xml file to return a item with a specific id only, but having trouble making it work.

burada php ne var

$xml_str = file_get_contents("test.xml");
$xml = simplexml_load_string($xml_str);
$albid = $_GET['id'];

$nodes = $xml->xpath('//library/book[@id=1]');

foreach($nodes as $node) {
echo $node['title'].'<br/>';
}

İlk olarak, php xml dosyasından bir şey döndürüyor değil.

Ne veri döndürmek için düzeltmek gerekir?

Ayrıca, id bağlantı alınacağını böylece nasıl xpath içine $ albid girersiniz?

Doğru yönde herhangi bir işaretçiler mutluluk duyacağız.

Teşekkürler!

- Ve burada örnek xml dosyası var -

<library>
<book id="1">
    <title>PHP and MySQL</title>
    <author fname="miguel" lname="alvarez">Miguel Alvarez</author>
</book>
<book id="2">
    <title>JAVA 123</title>
    <author fname="william" lname="vega">WIlliam Vega</author>
</book>

2 Cevap

İlk olarak, <library> etiketi kapatmalısınız aksi XML biçimlendirilmiş ve ayrıştırma başarısız olur.

SimpleXMLElement :: xpath () (ref), böylece bir nesne döndürür döngü içinde yok: echo $node->title.'<br/>';

Dizeye $ albid alma .. sıra, dize birleştirme kullanın: $nodes = $xml->xpath('//library/book[@id='.$albid.']');

Bu deneyin,

$xml_str = file_get_contents("test.xml");
$xml = simplexml_load_string($xml_str);
$albid = $_GET['id'];

$nodes = $xml->xpath("//library/book[@id=$albid]");

foreach($nodes as $node) {
    echo $node->title.'<br/>';
}