我有一个Lua程序正在使用来自外部设备的数据。设备返回格式错误的XML,如下所示:
<element attribute1="value1" attribute2="value2" attribute3=" m "value3" " attribute4="value4" />
特别是某些字段是用户可编辑的,可以想象包含应该转义的项目,但不是。希望我可以修复生成这些消息的代码,但在此之前我需要一种解决方法来尝试“做正确的事情™”。这些消息看起来似乎是固定格式,属性总是以相同的顺序存在并且始终存在(据我所知)所以我可以使用非常严格的模式匹配,如:
string.match(str, 'attribute1="(.*)" attribute2="(.*)" attribute3="(.*)" attribute4="(.*)")
但这看起来真的很糟糕,如果他们决定改变格式(不解决问题),当然会中断。
对替代解决方案的任何建议?我主要关心的是找到“需要变成&amp; quot;”的其他XML实体,我并不那么担心。
答案 0 :(得分:3)
不幸的是,如果XML格式不正确,那么你就无法想出一些适用于所有情况的东西。
我要做的是,首先尝试将其解析为普通的XML。如果失败,请回到正则表达式方法。这样,当修复此XML的生产者时,您的代码将自动开始做正确的事情。