-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 的节点的 Name 和 Description 的子值。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 回答