gpt4 book ai didi

css - 如何通过 CSS 选择器定位标签,引用兄弟标签的内容?

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:09 25 4
gpt4 key购买 nike

我正在编写一个 Ruby 脚本,它将解析和操作一些 XML 文件。我正在使用 Nokogiri 进行 XML 处理。

我遇到的问题是有几个像这样的结构:

<USER_ELEMENT>
<NAME>ATTRIBUTE01</NAME>
<VALUE>XXX</VALUE>
</USER_ELEMENT>

我需要设置 <VALUE>与特定 <VALUE>ATTRIBUEnn</VALUE> 相同的标签.我目前的做法是使用

xml.css('USER_ELEMENT').find { |node| node.at_css('NAME').text == 'ATTRIBUTEnn'}.at_css('VALUE').content = 'NEW_VALUE'

但它看起来很丑。

我想知道处理这种情况哪种方式更简洁?

最佳答案

使用 XPath:

attnn = "ATTRIBUTE01"
xml.at_xpath("//USER_ELEMENT[NAME='#{attnn}']/VALUE").content = "Yay"
puts xml
#=> <USER_ELEMENT>
#=> <NAME>ATTRIBUTE01</NAME>
#=> <VALUE>Yay</VALUE>
#=> </USER_ELEMENT>

在英语中,XPath 表示:

  • //USER_ELEMENT - 在文档中的任意位置查找具有此名称的元素
  • […] - 但前提是……
    • NAME="ATTRIBUTE01" - ...您可以找到一个包含此文本的子 NAME 元素
  • /VALUE - 现在找到这些
  • 的子 VALUE 元素

关于css - 如何通过 CSS 选择器定位标签,引用兄弟标签的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749651/

25 4 0