У меня была такая же проблема, когда я недавно использовал вложенную платформу виртуализации.
Работает после уменьшения MTU с 1500 до 1400 на исходном или целевом сервере.
/sbin/ip link set dev eth0 mtu 1400
Учитывая документ XML
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Color Scheme -->
<color name="primary">#YYYYYY</color>
<color name="primary_variant">#ZZZZZZ</color>
<color name="primary_variant">#ZZZZZZ</color>
<color name="primary_variant_old">#ZZZZZZ</color>
<color name="primary_variant_new">#ZZZZZZ</color>
</resources>
в file.xml
, вы можете использовать утилиту xq
для получения желаемого вывода:
xq -r '.resources.color[] |
"val " +
(."@name" | gsub("_(?<a>.)";.a | ascii_upcase) ) +
" = Color(" +
(."#text" | sub("#"; "0xFF") ) +
")"' file.xml
или, возможно, легче читать,
xq -r '.resources.color[] |
[ (."@name" | gsub("_(?<a>.)";.a | ascii_upcase) ),
(."#text" | sub("#"; "0xFF") ) ] |
"val " +.[0] + " = Color(" +.[1] + ")"' file.xml
Это выбирает каждую запись цвета и вставляет измененное значение атрибута name
и значение узла color
в строку, которая затем выводится.
Атрибут name
преобразуется в верблюжий -регистр путем преобразования каждого _x
(, где x
— любой символ )вX
(верхний -регистрx
). Затем значение узлов color
заменяется #
на 0xFF
.
Это выведет
val primary = Color(0xFFYYYYYY)
val primaryVariant = Color(0xFFZZZZZZ)
val primaryVariant = Color(0xFFZZZZZZ)
val primaryVariantOld = Color(0xFFZZZZZZ)
val primaryVariantNew = Color(0xFFZZZZZZ)
Утилита xq
— это инструмент для перевода XML в JSON. Инструмент xq
затем становится оболочкой для хорошо известного jq
синтаксического анализатора JSON, поэтому выражения jq
могут использоваться для изменения или общей работы со структурой XML-документа. Он является частью дистрибутива yq
утилиты (, первоначально являвшейся оболочкой синтаксического анализатора YAML вокруг jq
), как указано в https://kislyuk.github.io/yq/(, утилита yq
, доступная через snap
в Linux, также является синтаксическим анализатором YAML, но довольно другой инструмент!)
Парсер xq
, как и большинство других парсеров, отбрасывает комментарии.
Для справки: это документ JSON, который xq
преобразует приведенный выше XML в:
{
"resources": {
"color": [
{
"@name": "primary",
"#text": "#YYYYYY"
},
{
"@name": "primary_variant",
"#text": "#ZZZZZZ"
},
{
"@name": "primary_variant",
"#text": "#ZZZZZZ"
},
{
"@name": "primary_variant_old",
"#text": "#ZZZZZZ"
},
{
"@name": "primary_variant_new",
"#text": "#ZZZZZZ"
}
]
}
}