配列から XML ファイルを作成しようとしています。これは私のビルダーコードです:
def buildXML(formattedText)
builder = Nokogiri::XML::Builder.new do |xml|
xml.products {
formattedText.each do |lineItem|
xml.item {
xml.articleNumber lineItem[0]
description = lineItem[1..(findIndexOnShtrih(lineItem)-1)].join(" ").force_encoding(Encoding::Windows_1251)
xml.description description
xml.shtrihCode lineItem.at(findIndexOnShtrih(lineItem))
}
end
}
end
end
私の入力は次のようになります (常に 1 番目のインデックスに記事番号が含まれ、次に 2 番目から N-3 インデックス、N-2 から N-1 までの説明が続き、N 番目のインデックスにはバーコードが含まれます):
["047609", "СОК", "СВЕЖЕВЫЖАТЫЙ", "ТОМАТ", "200", "МЛ", "(фреш", "дня)", "1", "шт", "2400000032731"]["048504", "ВОДА", "ГАЗИРОВАННАЯ", "С", "НАТУРАЛЬНЫМ", "СИРОПОМ", "(200МЛ)", "1", "шт", "2400000032953"]["055794", "СОК", "СВЕЖЕВЫЖАТЫЙ", "В", "АССОРТИМЕНТЕ", "(200МЛ)", "1", "шт", "2400000036425"]["058270", "СОК", "СВЕЖЕВЫЖАТЫЙ", "КЛУБНИКА", "+ЯБЛОКО", "200", "МЛ", "(фреш", "дня)", "1", "шт", "2400000037149"]
これは次のようなものにつながります:
<articleNumber>055794</articleNumber>
<description>СОК СВЕЖЕВЫЖАТЫЙ В АССОРТИМЕНТЕ (200МЛ) 1 шт</description>
<shtrihCode>2400000036425</shtrihCode>
</item>
<item>
<articleNumber>058270</articleNumber>
<description>СОК СВЕЖЕВЫЖАТЫЙ КЛУБНИКА +ЯБЛОКО 200 МЛ (фреш дня) 1 шт</description>
<shtrihCode>2400000037149</shtrihCode>
</item>
</products>
基本的に、XML の記述には適切なキリル文字を表示する必要があります。
ビルダーに特定のエンコーディングを使用させることはできますか? Nokogiri::XML(a, nil, "UTF-8")
たとえば、特定のエンコーディングで XML ファイルを開く方法に関する多くの資料を見つけましたが、有効な XML を構築する方法については何も見つかりませんでした。
驚くべきことに、テキストのコード ブロックを省略すると、SO はテキストを問題なく表示します。