Ruby—将Hpricot数据写入文件

Ruby—将Hpricot数据写入文件,ruby,file-io,hpricot,Ruby,File Io,Hpricot,我目前正在做一些XML解析,我选择使用Hpricot,因为它易于使用和语法,但是我遇到了一些问题。我需要将发现的一段XML数据写入另一个文件。但是,当我这样做时,格式不会被保留。例如,如果内容应如下所示: <dict> <key>item1</key><value>12345</value> <key>item2</key><value>67890</value> <ke

我目前正在做一些XML解析,我选择使用Hpricot,因为它易于使用和语法,但是我遇到了一些问题。我需要将发现的一段XML数据写入另一个文件。但是,当我这样做时,格式不会被保留。例如,如果内容应如下所示:

<dict>
  <key>item1</key><value>12345</value>
  <key>item2</key><value>67890</value>
  <key>item3</key><value>23456</value>
</dict>
<dict>\n", "    <key>item1</key><value>12345</value>\n", "    <key>item2</key><value>67890</value>\n", "    <key>item3</key><value>23456</value\n", "  </dict>

在使用上述代码之后,我希望输出与上面显示的XML一模一样。然而,令我惊讶的是,文件的输出看起来更像这样:

<dict>
  <key>item1</key><value>12345</value>
  <key>item2</key><value>67890</value>
  <key>item3</key><value>23456</value>
</dict>
<dict>\n", "    <key>item1</key><value>12345</value>\n", "    <key>item2</key><value>67890</value>\n", "    <key>item3</key><value>23456</value\n", "  </dict>
\n”、“项目112345\n”、“项目267890\n”、“项目323456”
如果希望编写原始xml,请不要使用xml解析器。这是不必要的。但是,如果要进一步处理数据,仍然应该使用一个


另外,对于XML,您应该使用
Hpricot::XML
而不仅仅是
Hpricot

我的解决方案是用换行符替换文字'\n'字符,并通过简单地添加两个GSUB删除额外的标点符号,如下所示:



我不知道为什么我以前没有看到这个。就像我说的,这可能是一个简单的答案,我没有看到,这正是结果。谢谢你的回答

可悲的是,在我最初的问题中,需要大量的XML解析和搜索才能获得这段数据;因此,如果我不想花太多时间“滚动我自己的”,那么XML解析器是必要的。我正在处理的XML文件非常讨厌(几乎完全没有语义)而且非常大,因此我必须将文件的部分提取到片段文件中,以备以后分析。因此,我需要XML解析功能,但我也需要回写到文件的能力。实际上,我只是保留了我的原始代码,并将写入更改为f.write(dict.to_original_html.gsub('\n',“\n”).gsub('',“,”,''),这非常有效,用实际的换行符替换\n文字并删除不必要的标点符号。
f.write( dict.to_original_html.gsub('\n', "\n").gsub('" ,"', '') )