# How can i get attribute values from xml using libxml

**URL:** <https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777>\
**Category:** Rails\
**Created:** [June 8, 2009, 3:09pm UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777 "2009-06-08T15:09:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![lecielbleu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b487fb/32.png) [@lecielbleu](https://www.ruby-forum.com/u/lecielbleu)\
**Post date:** [June 8, 2009, 3:09pm UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777/1 "2009-06-08T15:09:34Z")

</div>

Hi ,  
i have xml document like this

\<?xml version="1.0" encoding="ISO-8859-9"?\>

…

then i have to use Category attribute but reader class couldnt  
recognize attributes

when i use these codes below for testing;

```
while reader.read

puts reader.node_type
end

```

it shows only 1 and 15 values which means  
XML\_READER\_TYPE\_ELEMENT =\> 1  
XML\_READER\_TYPE\_END\_ELEMENT =\> 15

how can i get attribute values?

i tried another method  
doc = reader.expand  
doc.find(’//Root/Stk/[Category=‘601’]’)  
but it also didnt work

---

<div class="post-metadata">

**Author:** ![lecielbleu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b487fb/32.png) [@lecielbleu](https://www.ruby-forum.com/u/lecielbleu)\
**Post date:** [June 8, 2009, 3:33pm UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777/2 "2009-06-08T15:33:42Z")

</div>

try doc.find(’//Root/Stk[@Category=“601”]’)

---

<div class="post-metadata">

**Author:** ![lecielbleu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b487fb/32.png) [@lecielbleu](https://www.ruby-forum.com/u/lecielbleu)\
**Post date:** [June 8, 2009, 4:03pm UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777/3 "2009-06-08T16:03:42Z")

</div>

Thanks a lot Simon , it worked ,  
can we double this filter method like category=“601” and brand=“15” at  
the same time

---

<div class="post-metadata">

**Author:** ![lecielbleu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b487fb/32.png) [@lecielbleu](https://www.ruby-forum.com/u/lecielbleu)\
**Post date:** [June 8, 2009, 6:35pm UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777/4 "2009-06-08T18:35:19Z")

</div>

See in-line code additions

Quoting lecielbleu [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> when i use these codes below for testing;
> 
> ```
> while reader.read
> 
> ```

```
            case reader.node_type
            when XML_READER_TYPE_ELEMENT
                case reader.name
                when 'Stk'
      puts reader['Category']
      puts reader['Group']
                end
            end

```

---

<div class="post-metadata">

**Author:** ![lecielbleu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b487fb/32.png) [@lecielbleu](https://www.ruby-forum.com/u/lecielbleu)\
**Post date:** [June 9, 2009, 12:23am UTC](https://www.ruby-forum.com/t/how-can-i-get-attribute-values-from-xml-using-libxml/169777/5 "2009-06-09T00:23:39Z")

</div>

try researching xpaths, particularly how to or 2 xpaths together.
