2015-03-14 2 views
0

Это HTML страницы (test.html)Как получить несколько данных из запроса xpath?

<div id = 'mainid'> 
    <div id = 'subid'> 
     Name: ABC 
    </div> 
    <div id = 'subid'> 
     Country: USA 
    </div> 
    <div id = 'subid'> 
     Date of birth: 15 Feb 1985 
    </div> 
</div> 
<div id = 'mainid'> 
    <div id = 'subid'> 
     Name: Jisan 
    </div> 
    <div id = 'subid'> 
     Country: Japan 
    </div> 
    <div id = 'subid'> 
     Date of birth: 15 Feb 1985 
    </div> 
</div> 
<div id = 'mainid'> 
    <div id = 'subid'> 
     Name: Mr Barman 
    </div> 
    <div id = 'subid'> 
     Country: Canada 
    </div> 
    <div id = 'subid'> 
     Date of birth: 15 Feb 1985 
    </div> 
</div> 

В PHP-код здесь

$file = $DOCUMENT_ROOT. "test.html"; 
$doc = new DOMDocument(); 
$doc->loadHTMLFile($file); 

$xpath = new DOMXpath($doc); 

$Querys = $xpath->query("*//div[@id='mainid']"); 
foreach ($Querys as $Querys) { 
    echo $Name = Please help me about this code; 
    echo $Country = Please help me about this code; 
    echo $DOB = Please help me about this code; 
} 

Примечание: я хочу, чтобы получить результат, как этот

Name: ABC, Country: USA, Date of birth: 15 Feb 1985. 
Name: Jisan, Country: Japan, Date of birth: 15 Feb 1985. 
Name: Mr Barman, Country: Canada, Date of birth: 15 Feb 1985. 

ответ

1

Один подход заключается в использовании параметр contextnode для DOMXPath :: query для подзапроса для каждого элемента mainid для дочерних субад. Что-то вроде этого:

$mainElements = $xpath->query("*//div[@id='mainid']"); 
foreach ($mainElements as $mainElement) { 
    $subElements = $xpath->query("div[@id='subid']", $mainElement); 

    if ($subElements && $subElements->length == 3) { 
     $Name = trim($subElements[0]->nodeValue); 
     $Country = trim($subElements[1]->nodeValue); 
     $DOB = trim($subElements[2]->nodeValue); 
     echo "$Name, $Country, $DOB\n"; 
    } else { 
     echo "Invalid number of sub-elements.\n"; 
    } 
} 

Обратите внимание, что фальши вызовов необходимы или вы в конечном итоге со всеми пробельными из исходного документа в вашем выводе.

+2

Большое вам спасибо :) –

Смежные вопросы