이것은 간단한 것이지만 지금은 나를 미치게 만듭니다. 나가 많은 시간을 전에 가지고있는 이것을 알아 내기에 소요 된 시간.xml 배열을 구문 분석하고 읽음
구문 분석 xmlsimple doc을 읽으려고합니다. 하지만 인덱스 번호별로 요소에 액세스 할 수없는 이유를 모르겠습니다. 내가 문제를 이해할 수 없다, 콘솔에서 이것을 시도 할 때 작동하지만 실제 코드에서는 작동하지 않는다.
undefined method `[]' for nil:NilClass
코드 : : 내 코드에서 수동으로 int 값을 제공함으로써 그것을 할 경우
@i = 0
list =""
while @i <= 2
puts xml
a = parsed_items["Item"][@i]["ItemId"]
list << a.to_s << ","
@i += 1
end
puts list.to_s
다음 작동 :
a = parsed_items["Item"][0]["ItemId"] # it works with other exact code
이보기 페이지에서 날이 오류를 제공합니다 @i
으로 변경하고 작동하지 않음 :
a = parsed_items["Item"][@i]["ItemId"] # it does not work with other exact code
XML :
1.9.2p290 :013 > items = "<ItemList> <Item> <ItemId>123</ItemId> <ItemName>abc</ItemName> <ItemType>xyz</ItemType> <Status>bad</Status> </Item> <Item> <ItemId>456</ItemId> <ItemName>fgh</ItemName> <ItemType>nbv</ItemType> <Status>bad</Status> </Item> </ItemList>"
=> "<ItemList> <Item> <ItemId>123</ItemId> <ItemName>abc</ItemName> <ItemType>xyz</ItemType> <Status>bad</Status> </Item> <Item> <ItemId>456</ItemId> <ItemName>fgh</ItemName> <ItemType>nbv</ItemType> <Status>bad</Status> </Item> </ItemList>"
1.9.2p290 :014 > parsed_items = XmlSimple.xml_in(items, { 'KeyAttr' => 'name' })
=> {"Item"=>[{"ItemId"=>["123"], "ItemName"=>["abc"], "ItemType"=>["xyz"], "Status"=>["bad"]}, {"ItemId"=>["456"], "ItemName"=>["fgh"], "ItemType"=>["nbv"], "Status"=>["bad"]}]}
XML : 로컬 한 대신 인스턴스 변수를 정의하고 몇 가지 이유를 들어
<ItemList>
<Item>
<ItemId>123</ItemId>
<ItemName>abc</ItemName>
<ItemType>xyz</ItemType>
<Status>bad</Status>
</Item>
<Item>
<ItemId>456</ItemId>
<ItemName>fgh</ItemName>
<ItemType>nbv</ItemType>
<Status>bad</Status>
</Item>
</ItemList>