2012-02-15 4 views
9

article-field1 안에있는 텍스트를 어떻게 검색합니까?div id에서 xpath 콘텐츠를 검색

<title>Testing</title> 
    <link>http://example.org</link> 
    <description>Description</description> 
    <language>en-us</language> 
    <lastBuildDate>Mon, 13 Feb 2012 00:00:00 +0000</lastBuildDate> 

    <item> 
    <title>Title Here</title> 
    <link>http://example.org/2012/03/27/</link> 
    <description><![CDATA[ 
     <div id="article-field1"><a href="http://example.org/test1">Test 1</a></div> 
     <div id="article-field2">123</div> 
    <pubDate>Tue, 2 Mar 2012 00:00:00 +0000</pubDate> 
    </item> 

나는

//description/div[@id="article-field1"]/text() 

어떤 조언을 사용하려고했습니다?

감사

+3

조작 된 XML (' penartur

+1

CDATA 섹션이 끝나는 곳을 볼 수 없습니다. 닫는 대괄호가 두 개 있어야합니다. 실제로 샘플에는 두 번째 설명에 대한 몇 개의 닫는 태그가 없습니다. 그것은 단지 형식이 잘못되었습니다. 수정 해주세요. – ingyhere

+0

@shadow : 문서에서

답변

2

당신은 일반 바닐라 XPATH 프로세서의 단일 호출을 할 수 없습니다.

  1. dyn:evaluate() 기능을 구현하는 특정 XPATH 프로세서를 사용 :

    당신은 두 가지 선택이있다 : (이 질문을 구걸 어떤 프로세서와 버전이 사용하고 있습니까?) 또는

  2. 전화를 두 번 사용하십시오. 먼저/title/item/description 노드의 텍스트 값을 가져옵니다. 두 번째는 첫 번째 결과를 새 XML 문서로로드 한 후 (XML 단편을 적절한 XML 문서로 변환하는 몇 가지 트윅을 사용하여) div [@ id = "article-field1"]입니다.
+0

참고 : 제목/항목/설명 노드의 내용은 XML이 아닌 순수한 문자 데이터이므로 "// description/div [@ id ="article-field1 "]/text()"가 작동하지 않습니다. –

2
//description/div[@id="article-field1"]/a/text() 

은 루트 요소를 첨가하고, 해당 '설명'태그는 폐쇄된다. 이것은 원본 XML을 부분적으로 붙여 넣는 오류를 가정합니다. 이는 표현식이 주어지면 의미가 있습니다. 기본적으로 원래 쿼리에 a 요소가 누락되었습니다.

http://www.xpathtester.com/에서 확인할 수 있습니다.