2010-08-02 1 views

답변

3

:

<fruit name="mango"/> 

나는 같은 출력을 얻을 싶어요.

노드의 속성을 포함하는 해시를 반환합니다. 키는 속성 이름이고, 값은 속성을 나타내는 Nokogiri :: XML :: Attr입니다.

Read this도 있습니다.

예를 보여 드리겠습니다.

<?xml version="1.0" encoding="utf-8" ?> 
<files> 
    <file exists="true"> 
     <content /> 
    </file> 
    <file exists="false"> 
     <content /> 
    </file> 
</files> 

그리고 루비 코드를 처리하기 :

require "nokogiri" 

doc = Nokogiri::XML(File.read "my.xml") 

doc.css("files file[exists]").first.attributes 
# => #<Nokogiri::XML::Attr:0x1184470 name="exists" value="true"> 
doc.css("files file[exists]").first.attributes["exists"].value 
# => "true" 
+0

저는 이것을 읽었지만 해결할 수는 없습니다. 작은 예 !! – fossmaniac

+0

답변에 예제를 추가했습니다. –

2
xml = %(<fruit name="mango"/>) 
fruit = Nokogiri.XML(xml) % "fruit" 

fruit.attributes.values.map(&:to_xml).join.strip 
+0

아주 좋은 - 나는 몇 가지 살아있는 진드기를 배웠다. –

0
def getattributestest(doc,attr,rexg) 
    arr = doc.css(rexg) 
    cnode = arr.select {|node| node} 
    cnode.inject([]) do |rs,i| 
    rs << i.attributes[attr] 
    end 
0

"이름 ="망고 "XML 입력에서"< frunit 이름으로 출력한다 일부 코드 다음은 XML 문서입니다 = "mango"/> "

require 'nokogiri' 
doc = Nokogiri::XML %q|<xml><fruit name="mango"/></xml>| 
element = doc.xpath("//fruit") 
hash = Hash[doc.xpath("//fruit")[0].attributes.map{ |n, v| [ n, v.value ]}] 
hash.each do |k, v| 
    puts %Q|#{k}="#{v}"| 
end