无法在Ruby中处理XML属性XPath(使用Nokogiri)

无法在Ruby中处理XML属性XPath(使用Nokogiri),ruby,xml,xpath,nokogiri,Ruby,Xml,Xpath,Nokogiri,我正在尝试过滤xml文件以获得具有特定属性的节点。我可以成功地按节点ex进行筛选。\top\u manager,但是当我尝试\\top\u manager[@salary='great']时,我什么也没有得到 <?xml version= "1.0"?> <employee xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo

我正在尝试过滤xml文件以获得具有特定属性的节点。我可以成功地按节点ex进行筛选。\top\u manager,但是当我尝试\\top\u manager[@salary='great']时,我什么也没有得到

    <?xml version= "1.0"?>
<employee xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="employee.xsd">
    <top_manager>
        <ceo salary="great" respect="enormous" type="extra">
            <fname>
                Vasya 
            </fname>
            <lname>
                Pypkin
            </lname>
            <hire_date>
                19
            </hire_date>
            <descr>
                Big boss
            </descr>
        </ceo>
        <cio salary="big" respect="great" type="intro">
            <fname>
                Petr
            </fname>
            <lname>
                Pypkin
            </lname>
            <hire_date>
                25
            </hire_date>
            <descr>
                Resposible for information security
            </descr>
        </cio>
    </top_manager>
谢谢。

这是因为工资不是元素的属性,而是的子元素的属性:

//xmlns:top_manager[*[@salary='great']]
上面的XPath select元素具有其任何子元素的属性salary equals great。或者,如果要在本例中选择元素的子元素:

//xmlns:top_manager/*[@salary='great']

@JohnWalski上面建议的2个XPath中的任何一个都返回您所需的正确节点?很抱歉延迟,运行状况有问题。我需要第二个XPath请求。我理解我的错误。但即使有了改进,这段代码对我也不起作用。我的代码返回0。你能就这个问题给出一些建议吗?@JohnWalski我怀疑这是因为XML有默认的名称空间,请尝试在XPath中添加xmlns前缀,我不是ruby用户,根据另一个线程的建议:。更新答案以反映这一建议
//xmlns:top_manager/*[@salary='great']