Nokogiri,找到具有多个属性的XML节点并更改文本

时间:2013-11-27 09:56:56

标签: ruby xml xml-parsing nokogiri

我正在尝试更改indl文件。 indl文件是由Adobe Indesign创建的文件,用于保存文档的结构,基本上是XML。我想使用Nokogiri找到一些选定的XML节点并用我的文本替换文本,然后将xml保存到另一个文件。

XML当然很奇怪:我找到一些文档来检索带有Nokogiri更改文本的HTML标记,但我不知道如何管理这样的XML片段:

<cflo>
<txsr prst="o_u5084" crst="o_u5085" trak="D_10">
    <pcnt>c_tEST</pcnt>
</txsr>
<txsr prst="o_u5086" crst="o_u5c" trak="D_20">
 <pcnt>c_Titolo titolo titolo</pcnt>
</txsr>
<cflo>

基本上我需要查找prstcrst属性的组合,并替换pcnt节点内的内容。

我试试这个

@doc.xpath("//txsr[prst='o_u5086' and crst='o_u5085']")

但我不知道如何更改pcnt节点内的文本。

1 个答案:

答案 0 :(得分:0)

  1. 这不是正确的XPath。正确的XPath将如下所示:

    @doc.xpath("//txsr[@prst='o_u5086'][@crst='o_u5085']")
    
  2. 您应该从集合中获取第一个节点,并使用inner_html=方法替换文本值。

  3. 可在此处找到完整代码:https://gist.github.com/kaineer/7673698