我有一个包含以下片段的xml文档:
<x>
abcd
<z>ef</z>
ghij
</x>
我想在节点内找到文本“defg”,并将该节点修改为以下内容:
<x>
abc
<y>
d<z>ef</z>g
</y>
hij
</x>
这意味着创建一个新的节点,其中包含x.text和其他子节点。
我可以找到包含文本的节点,但我不知道如何分解它,并且只包含<y>
标记内的匹配部分。
任何可以指出我正确方向的想法都是最受欢迎的。感谢。
答案 0 :(得分:1)
如何将其变成刺痛然后使用正则表达式进行更改,然后再次使用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)