● Target XML
<result>
<header>
<response_code>201</response_code>
</header>
<item>
<fileinfo>
<property name="realname"><![CDATA[달려라네오.doc]]></property>
<property name="filesize"><![CDATA[45241]]></property>
<property name="mimetype"><![CDATA[application/pdf]]></property>
<property name="width"><![CDATA[0]]></property>
<property name="height"><![CDATA[0]]></property>
</fileinfo>
</item>
</result>
● RubySource
require "rexml/document"
...
.....
........
def callxml(docurl)
if docurl == nil
return 0
end
pdfsize = 0
begin
xml_req = Net::HTTP.get_response(URI.parse("#{docurl}")).body
#puts "#{xml_req}" << XML의 모든 내용을 출력합니다.
doc = REXML::Document.new(xml_req)
doc.elements.each('result/item/fileinfo/property') do |ele|
#propertys << ele.elements['property']
#puts ">>> #{ele.elements.text}"
#puts ">>> #{ele.elements.attributes.values}"
#puts ">>> #{ele.name}"
#puts ">>> #{ele.attributes}"
#puts ">>> #{ele.attributes.values}"
#puts ">>> #{ele.elements['property'].text}"
#puts ">>> #{ele.elements['property'].attributes.value}"
#puts ">>> #{ele.elements['filesize'].text}"
if "#{ele.attributes.values}" == "filesize"
pdfsize = ele.text
end
end
#으로 처리된곳은 주석입니다.
XML 을 분석하는 과정에서 값이 무엇이 찍히는지 보기 위해 디버깅한 코드로 보시면 되겠네요.
원하는것은 fileSize 찾는것인데 우휴.. 생각보다 시간이좀 걸렸답니다.
아차! HTTP와 REXML 을 사용하기 위해서는 import 해야하는 자원도 잊어서는 안되죠!!
require "net/http"
require "rexml/document"
2줄을 최상위에 선언 해야 되겠습니다. 그리고 class도 만들어서 사용 해야 되요.. ^^