XPath로 콘텐츠를 추출 하시겠습니까?

c# dom html-agility-pack xml xpath

문제

HTML 컨텐트를 XML 문서로 저장하고 있습니다 (HTML Agility Pack 사용). 일부 XPath는 알고 있지만 필요로하는 정확한 콘텐츠는 0으로 만들 수 없습니다.

아래 예제에서 큰 이미지에서 "src"및 "alt"텍스트를 추출하려고합니다. 이것이 나의 예이다.

<html>
<body>
   ....
   <div id="large_image_display">
      <img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
   </div>
   ....
   <div id="small_image_display">
      <img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
   </div>
</body>
</html>

"images / KC0763_l.jpg"및 "Circles T-shirt - Navy"를 가져 오는 XPath는 무엇입니까? 이것은 내가 얼마나 멀리 갈 수 있느냐가 잘못되었습니다. 이 시점에서 주로 의사 코드 :

\\div[@class='large_image_display']\img[1][@class='photo']@src
\\div[@class='large_image_display']\img[1][@class='photo']@alt

이 권리를 얻는 데 도움이 될 경우 대단히 감사하겠습니다.

수락 된 답변

다음 xpath는 img 태그의 src 속성으로 연결됩니다.

'//html/body/div/img[@class="photo"]/@src'

그리고 이와 비슷하게 alt 속성으로 이동합니다 :

'//html/body/div/img[@class="photo"]/@alt'

거기에서 속성 텍스트를 볼 수 있습니다. 'large_image_display'와 일치하는 항목 만 찾으려면 다음과 같이 필터링하십시오.

'//html/body/div[@id="large_image_display"]/img[@class="photo"]/@src'    

인기 답변

다음 XPath 표현식을 사용하십시오 .

/html/body/div[@id='large_image_display']/img/@src

/html/body/div[@id='large_image_display']/img/@alt

매우 약한 평가 (전체 (하위) 트리가 스캔되도록 함)를 초래할 수 있으므로 항상 // 약어를 사용하지 마십시오 .

이 특별한 경우에 우리는 html 요소가 문서의 최상위 요소라는 것을 알고 있으며 간단히 /html - not //html 선택할 수 있습니다.

귀하의 주요 문제는 표현에 사용하던 것이 었습니다 \ 하고 \\ 와의 XPath에서 그러한 사업자가 없습니다. 사용하려는 올바른 XPath 연산자는 /// 약어입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.