0

XML ドキュメントがあります。

<product>
    <item>
        <item00>
            <name>DVD</name>
        </item00>
    </item>
</product>
<product>
    <item>
        <item11>
            <name>CD</name>
        </item11>
    </item>
</product>

そして、これらの商品名を表示したいのですが、「 item00」や「item11 」などの商品があります。

XPath にパスの正規表現を追加しようとしましたが、成功しませんでした。

これらの製品 (DVD および CD) の名前を XPath を使用して表示することはできますか?

<?php
$xml = 'file.xml';
$content = '';
$f = fopen($xml, 'r');

while($data = fread($f, filesize($xml))) {
    $content.= $data;
}
fclose($f);

preg_match_all('/\<product\>(.*?)\<\/product\>/s', $content, $product);

$product = $product[1];

$doc = new SimpleXMLElement($content);

for($i = 0; $i <= count($product) - 1; $i++) {
    // So far, no problems. Seriously.
    // The issue starts here.
    $query = $doc->xpath('/product/item/???');

    foreach($query as $item) {
        echo $item->name . '<br>';
    }
}
?>

どこ "???" 「item00」と「item11」の問題です。

誰かが私を知っていて、私を助けることができれば、私はとても感謝しています!

4

2 に答える 2

0
Here is the total working code 

<?php
$xml = 'file.xml';
$content = '';
$f = fopen($xml, 'r');

while($data = fread($f, filesize($xml))) {
    $content.= $data;
}
fclose($f);
$content = "<root>$conten</root>";
$doc = new SimpleXmlElement($content);
$query = $doc->xpath('//item/child::*');
foreach($query as $item) {
    echo $item->name . '<br>';
}
于 2013-10-14T10:11:27.320 に答える