2011-03-13 6 views
-1

이 가능한 중복하십시오
if you know xpath then please help?XPath는 좀 도와

안녕하세요, 그래서 여기가 HTML 코드 때문에

<html> 
<body> 
<table> 
<tr> 
Test 
</tr> 
<tr> 
<td> 
<a href = "google.com"> 
Google 
</a> 
</td> 
</tr> 

<tr> 
<td> test1</td> 
<td> 
<a href = "yahoo.com"> Yahoo!</a> 
</td> 
</tr> 


</tr> 
</table> 

</body> 
</html> 

이가 지금은 텍스트를 원하는 구글과 야후!

는 어떻게

여기

내가 쓴 것을 얻을 수

table[1]/tr[1]/td[2] 
내가 무슨 일이 일어나고 있지만 아무것도 게재되지 않습니다 알고하지 말자

...

감사

+0

중복 질문을하지 마십시오하게 하단에 추가 </tr>을 가지고 생각합니다. 대신 원래 질문을 수정하여 문제를 개선하십시오. –

+0

@ 존 손 더스 : 그렇습니다. 하지만 우리는 둘 중 하나만 닫아야합니다 ... –

+0

두 가지 질문은 서로 다른 구조를 참조하며 두 답변에 고유 한 점이 있습니다 – zode64

답변

0

다음 당신이 찾고있는 XPath를 그대로 :

구글

/html/body/table/tr[2]/td/a/text() 

를 들어 야후

의 경우로
/html/body/table/tr[3]/td/a/text() 

을 제목은 'a'요소에 포함되어 있으며 text() 노드 유형 테스트는 'a'요소의 텍스트 값을 가져옵니다.

사실 나는 당신의 HTML 그것이 잘못된

+0

'text()'는 함수가 아니라 노드 유형 테스트입니다. 그리고 XHTML과 같은 혼합 된 콘텐츠 모델에서 텍스트 노드를 선택하는 것은 좋지 않습니다 ... –

+0

이해, 텍스트로 설명하는 것에 대한 대답을 함수로 편집했습니다. 그러나 텍스트()에 대한 대안이 있습니까? 질문 된 내용에 관한 질문 – zode64

+0

결과가 노드 집합이어야하는 경우 올바른 방법은 해당 'a'요소를 선택한 다음 적절한 DOM 메소드로 문자열 값을 가져 오는 것입니다. 결과가 단지 한 노드의 문자열 값일 수 있다면'string()'XPath 함수를 사용할 수 있습니다. –

0

숫자와 유형이 항상 존재한다는 것을 알고 있다면

/html/body/table/tr/td/a/ 

더 일반적인 방법은 다음과 같습니다

html//a 
+0

HTML 문서가 유효한 XML이라고 가정합니다.이 경우에는 유효합니다. 일반적으로 XHTML을 사용하고 있는지 확인하십시오. – Mike