Исправление плохого XML в Lua - PullRequest
0 голосов
/ 26 июня 2009

У меня есть программа Lua, которая потребляет данные с внешнего устройства. Устройство возвращает искаженный XML, который выглядит следующим образом:

<element attribute1="value1" attribute2="value2" attribute3=" m "value3" " attribute4="value4" />

В частности, некоторые поля доступны для редактирования пользователем и могут содержать элементы, которые следует экранировать, но это не так. Надеюсь, я смогу исправить код, генерирующий эти сообщения, но до тех пор мне нужен обходной путь, чтобы попытаться «поступить правильно». Похоже, что сообщения приходят в фиксированном формате с атрибутами, всегда в одном и том же порядке и всегда присутствующими (насколько я могу судить), поэтому я мог бы использовать очень ограниченное сопоставление с образцом, например:

string.match(str, 'attribute1="(.*)" attribute2="(.*)" attribute3="(.*)" attribute4="(.*)")

но это кажется очень странным и, конечно, сломается, если они решат изменить формат (без решения проблемы.

Есть предложения по альтернативным решениям? В основном меня беспокоит поиск ", которые нужно превратить в". Другие сущности XML, о которых я не так сильно беспокоюсь.

1 Ответ

3 голосов
/ 26 июня 2009

К сожалению, если XML искажен таким образом, вы не можете придумать что-то, что будет работать абсолютно во всех случаях.

Сначала я попытаюсь разобрать его как обычный XML. Если это не поможет, вернитесь к своему методу регулярных выражений. Таким образом, когда производитель этого XML исправлен, ваш код автоматически начнет действовать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...