用nokogiri修改和包装xml节点

问题描述

| 我有一个带有如下片段的xml文档:
<x>
  abcd
  <z>ef</z>
  ghij
</x>
我想在节点内找到文本\“ defg \”,然后将该节点修改为以下内容:
<x>
  abc
  <y>
    d<z>ef</z>g
  </y>
  hij
</x>
这意味着创建一个内部包含x.text和其他子节点的新节点。 我可以找到包含文本的节点,但是我不知道如何分解文本,而只将匹配的部分包装在
<y>
标记内。 任何能指出正确方向的想法都将受到赞赏。谢谢。     

解决方法

        将其转换为字符串,然后使用正则表达式进行更改,然后再次使用nokogiri对其进行解析,该怎么办?
sting = some_xml.to_s
# => \'<x>abcd<z>ef</z>ghij</x>\'

splits = sting.match(/(.)<z>(.*)<\\/z>(.)/)

new_string = sting.gsub(splits[1],\"<y>#{splits[1]}\").gsub(splits[3],\"#{splits[3]}</y>\")

Nokogiri::XML(new_string)
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...