Я пытаюсь создать XML-файл из массива. Это мой строитель код:Nokogiri XML-редактор с кириллическим текстом (windows 1251)
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 является количество и Nth индекс содержит штрих-код):
["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, чтобы показать соответствующие буквы кириллицы.
Могу ли я каким-то образом заставить строителя использовать определенную кодировку? Я нашел много материалов о том, как открыть XML-файлы с определенной кодировкой, например, с помощью Nokogiri::XML(a, nil, "UTF-8")
, но ничего не о том, как создать корректный XML.
Удивительно, если я опускаю блок кода в свой текст, SO отображает мой текст в порядке.
Добро пожаловать на переполнение стека. Укажите минимальные входные данные и ожидаемый результат. Это помогает нам помочь вам и предоставляет другим, которые ищут подобный ответ, идею о том, как ваш код будет соответствовать их прецеденту. –
Кроме того, в Ruby методы и переменные записываются в snake_case, а не в camelCase. It's_a_matter_of_readability AndCodeStyleInTheCommunity. –
Вам действительно нужно принудительное кодирование, а не кодирование? –