2011-09-08 5 views
3

나는 응답 XML에서 값의 존재를 주장하는 루비에서 몇 가지 수용 테스트를 작성하고있다.REXML - 단일 요소를 추출하는 방법

내 XML은 다음과 같이이다 :

<?xml version="1.0"?> 
<file xmlns:dvi=xxxxx> 
    <name>whatever</name> 
</file> 

이 다른 특성입니다하지만 위에있는 것은 나의 점을 설명한다.

xml = <the xml above> 
xmlDoc = REXML::Document.new(xml) 
puts xmlDoc.elements().to_a('file/name') 

<name>whatever</name>가 출력합니다하지만 난 오직 하나 개의 이름 요소가있을 것입니다 단순히이 XML에서 whatever

을 인쇄하려면 : 여기 내 루비 코드입니다. 난 그냥 elements.each을 사용하여 원하는 텍스트를 인쇄 할 수 있지만 과장된 것 같습니다.

감사합니다, 아드리안

답변

4

(이 강력하지 않습니다)

xmlDoc.elements().to_a('file/name').first.text 

을 시도하고 일부 오류 처리를 추가합니다.

to_a은 REXML 요소의 배열을 반환합니다. first을 사용하면 첫 번째 요소 (그리고 유일한 것으로 추정 됨)를 검색 할 수 있습니다. text을 사용하면 해당 요소의 텍스트 콘텐츠에 액세스 할 수 있습니다.

+0

감사합니다. – Adrian

+0

조언 해 주셔서 감사합니다. 이 특정 테스트의 경우 하나의 이름 만있을 것입니다 (파일의 메타 데이터를 가져 오는 중입니다). 하나 이상의 요소가 반환 될 다른 테스트가 있지만 지금해야할 일을 알고 있다고 생각합니다. 다시 한번 감사드립니다. – Adrian

관련 문제