У меня есть программа Lua, которая потребляет данные с внешнего устройства. Устройство возвращает искаженный XML, который выглядит следующим образом:
<element attribute1="value1" attribute2="value2" attribute3=" m "value3" " attribute4="value4" />
В частности, некоторые поля доступны для редактирования пользователем и могут содержать элементы, которые следует экранировать, но это не так. Надеюсь, я смогу исправить код, генерирующий эти сообщения, но до тех пор мне нужен обходной путь, чтобы попытаться «поступить правильно». Похоже, что сообщения приходят в фиксированном формате с атрибутами, всегда в одном и том же порядке и всегда присутствующими (насколько я могу судить), поэтому я мог бы использовать очень ограниченное сопоставление с образцом, например:
string.match(str, 'attribute1="(.*)" attribute2="(.*)" attribute3="(.*)" attribute4="(.*)")
но это кажется очень странным и, конечно, сломается, если они решат изменить формат (без решения проблемы.
Есть предложения по альтернативным решениям? В основном меня беспокоит поиск ", которые нужно превратить в". Другие сущности XML, о которых я не так сильно беспокоюсь.