Я пытаюсь отредактировать XML-файл с помощью Ruby и REXML, но после записи файла обратно на диск кодировка изменяется. Но мне нужно сохранить оригинальную кодировку файла!
Вот как выглядит мой 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