使用Ruby删除XML文件中的字符

时间:2015-05-04 12:49:57

标签: ruby xml

我正在使用Ruby,我想从XML文件中删除所有\个字符。

这是我的XML文件:

<w:numId w:val=\"2\"/></w:numPr></w:pPr><w:bookmarkStart w:id=\"0\" w:name=\"__DdeLink__0_226207805\"/><w:bookmarkEnd w:id=\"0\"/><w:r><w:rPr></w:rPr><w:t>Serve high quality food</w:t></w:r></w:p>, <w:p><w:pPr><w:pStyle w:val=\"style17\"/><w:numPr><w:ilvl w:val=\"0\"/><w:numId w:val=\"2\"/></w:numPr></w:pPr><w:bookmarkStart w:id=\"0\" w:name=\"__DdeLink__0_226207805\"/><w:bookmarkEnd w:id=\"0\"/>

2 个答案:

答案 0 :(得分:1)

您的文件中实际上没有反斜杠字符(\)。示例中的反斜杠只是转义了下面的双引号并阻止它终止字符串,从而导致由于未终止的双引号而导致语法错误。

在IRB中打印该字符串时所看到的实际上并不是反斜杠,而是反斜杠与以下双引号组合作为双引号被转义的指示。当你第一次遇到它时,这个想法很难掌握。看看&#34; Escape sequences&#34;。

说它简短而且很甜,你的文件中没有反斜杠,所以你不能删除它。

让我用一个例子来解释:

> text = "This is sample text for escape character\""
#=> "This is sample text for escape character\""

相当于:

> text = 'This is sample text for escape character"'
#=> "This is sample text for escape character\""

要删除反斜杠(\),只需删除"

即可
 > text.tr!('"', '')
 #=> "This is sample text for escape character"

我希望这说清楚。

答案 1 :(得分:0)

谢谢你们的答案,这就是我所说的,它按照我的意愿运作:

 text = ''
      File.open("#{temp_dir}/plan_report_template/word/document.xml").each { |line|

       text << line

      }


      open("#{temp_dir}/plan_report_template/word/document.xml", "w") { |file| file.write(text.gsub('\"', '"')) }