-2

重複の可能性:
PHP xpath - 値を持つ要素を検索し、要素の前後の要素も取得します

私は次のxmlを持っています:

<Table>
    <ID>100</ID>
    <Name>Fridge</Name>
    <Description>A cool refrigerator</Description>
</Table>
<Table>
    <ID>100</ID>
    <Name>Fridge</Name>
    <Description>Latest Refrigerator</Description>
</Table>
<Table>
    <ID>200</ID>
    <Name>Fridge</Name>
    <Description>Another refrigerator</Description>
</Table>

上記の例では、ID=100 のノードの名前と説明の子の値を取得したいと考えています。xml ファイルには約 1000 のテーブル ノードがあります。

xml 全体を解析し、ID が 100 のノードのみの名前と説明の値を取得するにはどうすればよいですか?

これまでのところ、次のコードを試しましたが、必要なものが得られませんでした:

$source = 'Tables.xml';
$xmlstr = file_get_contents($source);
$sitemap = new SimpleXMLElement($xmlstr);

$sitemap = new SimpleXMLElement($source,null,true);

foreach($sitemap as $url) {

    if($url->ID == '100')
    {
        echo 'Name: '.(string)$url->Name.', Description: '.(string)$url->Description.'<br>';
    }
}
4

1 に答える 1

2

Tableすべてのタグを取得してそれらをループする場合、これは非常に簡単です。

// Assuming you already loaded the XML into the SimpleXML object $xml
$names_and_descriptions = array();
foreach ($xml->Table as $t) {
  if ($t->ID == 100) {
    echo $t->Name . " " . $t->Description . "\n";
    // Or stick them into an array or whatever...
    $names_and_descriptions[] = array(
      'name'=>$t->Name, 
      'description'=>$t->Description
    );
  }
}
var_dump($names_and_descriptions);
于 2012-09-06T12:56:10.283 に答える