나는 다음과 같은 HTML을 가지고있다 :
<div class="top">
<p>Blah.</p>
I want <em>this</em> text.
</div>
" I want <em>this</em> text.
" I want <em>this</em> text.
문자열을 추출하는 XPath 표기법은 무엇입니까? 편집 : 반드시 문자열을 추출하는 단일 XPath식이 필요하지 않습니다. 여러 노드를 선택하고 문장을 생성하기 위해 노드를 반복하면 좋을 것입니다.
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(myHtml);
doc.DocumentNode.SelectSingleNode("??????");
노드 나 문자열을 추출 할 대상은 무엇입니까?
노드를 원하면 "I want <em>this</em> text."
는 두 텍스트 노드 의 최상위 레벨에 구성된 XML 단편 과 텍스트 노드 하위가있는 <em>
요소 입니다. 최상위 레벨에 여러 개의 노드가 있기 때문에 SelectSingleNode()
대신 SelectNodes("xpath expression a la @Alejandro")
SelectSingleNode()
합니다.
문자열을 원하면 다시 SelectNodes ()를 사용해야합니다. 선택한 노드를 반복하고 각 노드의 outerHTML을 연결합니다. 비슷한 것을 보여주는 좋은 예를 보려면 여기 를 참조 하십시오 .
또한 XPath 표현식이 일반적으로 원하는 것을 제공 할 것인지는 예제에서 약간 분명하지 않습니다. 예를 들어 <div class="top">
아래의 초기 <p>...</p>
이후 모든 것을 원하십니까? 아니면 모든 <p>
요소를 제외하고 <div>
아래에 모든 텍스트를 원하십니까? 아니면 다른 뭔가? 물론 @ Alejandro의 XPath 표현이 당신을 위해 작동한다면 이미 충분히 잘 지정되어 있습니다.
/div[@class='top']/p[.='Blah.']/following-sibling::node()
또는
/div[@class='top']/node()[not(self::p)]