아마도 내가하는 일보다 더 나은 방법이있을 것입니다. 저는 은유적인 움푹 들어간 구멍에 갇혀 있습니다.XPath에서 중첩 노드를 무시하도록하려면 어떻게해야합니까?
노드의 일부를 특정 노드 아래에 가져 오려고합니다. 나는이 XPath 식으로 등장 : 나열된 content_tags의 상관 내가 원하는 을 거라고 계층 구조의 맨이 될 수
>>> content_tags = 'h1 h2 h3 h4 h5 h6 p ol ul dl table'.split()
>>> content_xpath = './/*[%s]' % ' or '.join('self::%s' % i for i in content_tags)
>>> content_xpath
'.//*[self::h1 or self::h2 or self::h3 or self::h4 or self::h5 or
self::h6 or self::p or self::ol or self::ul or self::dl or
self::table]'
, 나는 같은 이상이어야 수있는 다른 요소를 무시하려는 레벨. 안타깝게도 이 <ul>
또는 <table>
, <table>
이 <ol>
등인 경우가 있고, 내부 요소가 외부와 함께 별도의 결과로 표시되는 경우가 있습니다. 좋은 방법이 있습니까 하나를 중첩 된 수있는 노드를 무시하기 위해 "컷"수행 찾았나요? 아니면 이것을 수행하는 좋은 방법이 있습니까? 어떻게 든 누락 된 것입니까?
다음은 구문 분석하려는 예제입니다.
<div class="interesting">
<img src="ignore-this.jpg"/>
<h1>I want this.</h1>
<p>I want this, too.</p>
<div class="sidebar">
<ul>
<li><p>I only want one copy of this, inside the UL.</p></li>
<li><p>Ditto.</p></li>
</ul>
</div>
</div>
고마워요!
BTW, 나는 내가 원하는 정확히 을 할 것이라고 생각 "그나마-include- 어떤-자손 또는-자체"필터를 주장한 w3.org 메일 링리스트에 대한 몇 가지 게시물을 찾았지만 최종 사양에 포함되지 않은 것으로 보입니다. 당신은 단지 흥미로운 div
바로 아래의 p
을 원하는 경우 : 그건 당신이 원하지 않을 거라면, 그렇게하지 않는
하지만 div
-! :(//p
와 마찬가지로 검색
나는이 일을 정말로하고 싶지 않았지만, 그것에 대해 이야기를 나누었습니다. 이제 깊이 중첩 되더라도 원하지 않는 요소 (예 : 모두 ''요소)를 제거하는 방법을 알아야합니다. – samwyse
@samwyse XQuery (XQuery Update Facility) 확장을 사용하는 XQuery 구현이 올바른 도구 일 수 있습니다. –