ruby 如何从这个xml中提取单词Default?

rjee0c15  于 2023-03-17  发布在  Ruby
关注(0)|答案(1)|浏览(122)
<XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="true" x="0" y="165" width="320" height="40">
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="165" width="320" height="1">
    </XCUIElementTypeOther>
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="165" width="320" height="40">
      <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="165" width="320" height="40">
      </XCUIElementTypeOther>
    </XCUIElementTypeOther>
    <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" enabled="true" visible="true" x="16" y="165" width="258" height="40" name="Default" label="Default" value="Default">
    </XCUIElementTypeStaticText>
    <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="16" y="203" width="304" height="2">
    </XCUIElementTypeOther>
    <XCUIElementTypeButton type="XCUIElementTypeButton" enabled="false" visible="true" x="284" y="176" width="18" height="17" name="checkmark" label="checkmark">
    </XCUIElementTypeButton>
  </XCUIElementTypeCell>

经过大量的搜索,我使用以下代码从一个较大的xml中提取了这个较小的部分:

xml = $D[device].page_source
  doc = Nokogiri::XML(xml)
  res = doc.xpath('//*[@name="checkmark"]').first.parent

我的目标是找出复选标记前面的单词,我可以在xml中看到单词Default,但我无法在代码中确定这一点,我使用Ruby。
你能帮帮我吗?

jdzmm42g

jdzmm42g1#

下面是XPath表达式,用于选择属性为“name”的最后一个元素,该元素位于属性为“name”=“checkmark”的元素之前

//*[@name="checkmark"][1]/preceding::*[@name][1]

你可以试试here
它所做的是,选择name=checkmark的第一个元素(只是为了避免出现多个元素的情况),然后选择其前面具有name的节点并获取第一个(前面的列表按相反顺序排列)

相关问题