2014-12-07 2 views
0

다음에서 나는 xml:lang="en" 속성이 들어있는 노드에서 텍스트를 가져오고 싶습니다. Nokogiri와 XPath를 사용하여 여러 개의 네임 스페이스로 된 속성을 가진 노드를 얻으십시오.

<li><span class="literal"><span property="dbpedia-owl:abstract" xmlns:dbpedia-owl="http://dbpedia.org/ontology/" xml:lang="en">text</span></span></li> 

현재 내가 사용

: 내 XPath를 배열 또는 잘못된 네임 스페이스 선언하지만, 내가 바로 뭔가를하고 있지 않다 어느 쪽의 경우

ns = {"xmlns" => "http://www.w3.org/1999/xhtml"} 
ns = {"xml" => "http://www.w3.org/XML/1998/namespace"}` 

array << doc.xpath("//span[@property='dbpedia-owl:abstract' and xmlns:dbpedia-owl='http://dbpedia.org/ontology/' and @xml:lang='en']").text` 

는 잘 모르겠어요.

질문이 이전에 요청되었지만 네임 스페이스와 여러 속성을 조합하여 찾을 수 없으므로 죄송합니다. 따라서 내가 발견 한 솔루션을 부적절하게 분리 된 문제와 결합했을 수 있습니다. 값이 URL 인 xmlsn:dbpedia-owl 값과 관련된 문제 일 수도 있지만 확실하지는 않습니다.

답변

1

는 내 컴퓨터에 있지, 그래서 나는 이것을 테스트 할 수 없습니다,하지만 내가 좋아하는 뭔가를 시작 했죠 :

doc.at('span.literal').text 

네임 스페이스는 유용하지만, 샘플에 따라 당신이 할 수 있어야 텍스트를 쉽게 잡아라.

+0

답장을 보내 주셔서 감사합니다. 그것도 잘 작동합니다. 첫 번째 스팬을 잡았습니다. 원본 스크립트와 똑같은 것이었고, 특별히 영어 텍스트가 필요했습니다. 하나의 예제 URL은 http://dbpedia.org/page/Astro_Boy입니다. 원본에서 첫 번째 span.literal은 아랍어 (xml : lang = "ar")로되어 있으며 이는 내 제안이 무엇인지를 보여줍니다. – tsukugiri

+0

그리고 질문에 나열된 요구 사항은 어디에 있습니까? 너는 "나는 텍스트를 움켜 잡고 싶다"고 말했다. –