我正在尝试使用 Ruby 和 REXML 编辑 xml 文件,但是在将文件写回磁盘后,编码发生了变化。但我需要保留文件的原始编码!
这是我的 xml 在编辑之前的样子:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AdHoc|iPhone' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\Bin\iPhoneSimulator\AdHoc</OutputPath>
<WarningLevel>4</WarningLevel>
<MtouchUseSGen>false</MtouchUseSGen>
<MtouchDebug>False</MtouchDebug>
<CodesignKey>iPhone Developer:</CodesignKey>
<MtouchUseLlvm>false</MtouchUseLlvm>
<MtouchUseThumb>false</MtouchUseThumb>
<MtouchArch>ARMv6</MtouchArch>
<CodesignProvision>A2FBBCDB-218A-4CCC-88ED-A484AAE87EA5</CodesignProvision>
<MtouchI18n />
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="monotouch" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Web.Services" />
<Reference Include="System.Json" />
</ItemGroup>
并将其写回磁盘后:
<PropertyGroup Condition=' '$(Configuration)|$(Platform)' == 'AdHoc|iPhone' '>
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\Bin\iPhoneSimulator\AdHoc</OutputPath>
<WarningLevel>4</WarningLevel>
<MtouchUseSGen>false</MtouchUseSGen>
<MtouchDebug>False</MtouchDebug>
<CodesignKey>iPhone Developer:</CodesignKey>
<MtouchUseLlvm>false</MtouchUseLlvm>
<MtouchUseThumb>false</MtouchUseThumb>
<MtouchArch>ARMv6</MtouchArch>
<CodesignProvision>A2FBBCDB-218A-4CCC-88ED-A484AAE87EA5</CodesignProvision>
<MtouchI18n/>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include='System'/>
<Reference Include='System.Xml'/>
<Reference Include='System.Core'/>
<Reference Include='monotouch'/>
<Reference Include='System.Xml.Linq'/>
<Reference Include='System.Web.Services'/>
<Reference Include='System.Json'/>
</ItemGroup>
这是我的代码:
File.open('file.xml') do |config_file|
# Open the document and edit the file
config = Document.new(config_file)
config.root.elements['PropertyGroup'].elements['CodesignKey'].text = 'my new developer'
# Write the result to a new file.
formatter = REXML::Formatters::Default.new
File.open('file.xml', 'w') do |result|
formatter.write(config, result)
end
end