2012-02-04 3 views
2

의 클래스와 스타일에 따라 태그를 제외 내가이 XPath 쿼리에 대한 다음 코드 ... 난 그냥 자신의 토마토를 재배는 XPath는

톱 10 팁을 추출 할

<div class="buying"> 


<h1 class="parseasinTitle "> 

<span id="btAsinTitle">Top Ten Tips for Growing Your Own Tomatoes (The Basic Art of Italian Cooking) <span style="text-transform: capitalize; font-size: 16px;">[Kindle Edition]</span></span> 


</h1> 
</div> 

(이탈리아 요리의 기본 미술) 그래서 난 다음 XPath 쿼리와 textContent를 사용하고

$xpath_books->query('//span[@id="btAsinTitle"]') 
하지만 결과는 자신의 토마토 (이탈리아 요리의 기본 미술) [킨들 에디션]을 성장을위한

톱 10 팁입니다

내가 생각

, 내가 <span style="text-transform: capitalize; font-size: 16px;">를 제외해야 내 목적을 이루기 위해 어떻게 할 수 있습니까?

답변

3

사용이 XPath를 :

//span[@id="btAsinTitle"]/text() 
+2

감사를 사용하여 ... –

+0

@NewBee, 당신은 환영합니다! –

+0

글쎄, 내가 아는 것은 text() 함수가 노드에서 텍스트를 추출하는 데 사용되지만 여기서는 혼란 스럽다. 왜 내 경우에는 효과가 있었 을까? [kindle 추가] 또한 텍스트입니까? 왜 그렇게? –

3

당신의 XPath 만 ID로 노드를 반환 않지만, DOM 연결된 DOMNodes의 나무이기 때문에, 반환 된 노드가 자식 노드가 포함됩니다. nodeValue 또는 textContent으로 반환 된 범위에 액세스하면 PHP는 "Kindle Edition"을 보유하는 자식 범위를 포함하여 모든 자식의 결합 된 DOMText 노드를 반환합니다. 당신은 단지 첫 번째 텍스트 부분을 가져하려면 DOMDocument in php

에서 그에

 SPAN 
    / \ 
    TEXT SPAN 
      \ 
      TEXT 

더, 첫 번째 childNode에의 nodeValue를 가져올 필요가 :

echo $result->item(0)->childNodes->item(0)->nodeValue; 

대안을 것을 가져 문자열을 XPath로 직접 입력하면

echo $xpath->evaluate('string(//span[@id="btAsinTitle"]/text())'); 

을 참조하십시오.

대신 전체 DOMText 노드를 반환하려면

, 그것은 완벽하게 작동,

//span[@id="btAsinTitle"]/text() 
+1

감사합니다 @ Gordon, 당신이 대답 한 것은 바로 제가 잠시 전에 저에게 묻고있는 것이 었습니다 .. –

+0

다시 한번 감사드립니다. –