Ruby 使用Nokogiri解析XPath

Ruby 使用Nokogiri解析XPath,ruby,xml,xpath,nokogiri,Ruby,Xml,Xpath,Nokogiri,我正在编写一些脚本来更改配置XML文件中的一些值。脚本将在源文档中使用要替换的XPath表达式和替换值 如果在源文档中找到该节点,则将替换该值,但如果未找到该节点,则需要创建一个新元素并添加具有属性的必需元素 例如,在web.config中,如果appSetting存在,则更改其值,如果不存在,则创建一个新值 /configuration/appSettings/add[@key='ClientValidationEnabled']/@value 我想知道是否有可能将XPath理解为一个表达式

我正在编写一些脚本来更改配置XML文件中的一些值。脚本将在源文档中使用要替换的XPath表达式和替换值

如果在源文档中找到该节点,则将替换该值,但如果未找到该节点,则需要创建一个新元素并添加具有属性的必需元素

例如,在web.config中,如果appSetting存在,则更改其值,如果不存在,则创建一个新值

/configuration/appSettings/add[@key='ClientValidationEnabled']/@value

我想知道是否有可能将XPath理解为一个表达式,让我可以遍历它,并在需要时创建一个新元素。

有趣的问题!我不知道怎么做。鉴于Nokogiri使用libxml2进行所有XML处理,并将XPath传递给它,我怀疑Ruby是否有任何可解析的XPath。如果您必须自己解析它,可能会对您有所帮助:请注意,一般来说,对于任何任意XPath表达式,您并不总是有一个特定的可用位置。例如,考虑表达式/Fo[祖先::Bar ];如果不存在这样的元素,并且您有多个bar元素,您将它放在哪里?如果不存在bar元素,但foo却存在呢?更好的是:您可以将XPath-PEG与Ruby-PEG库一起使用,比如。