代码之家  ›  专栏  ›  技术社区  ›  Dolphin

修复lua中的错误XML

  •  0
  • Dolphin  · 技术社区  · 15 年前

    我有一个使用外部设备数据的Lua程序。设备返回的XML格式不正确,如下所示:

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

    特别是,有些字段是用户可编辑的,可能包含应该转义但不应该转义的项。希望我可以修复生成这些消息的代码,但在此之前,我需要一个变通方法来尝试“做正确的事情”。消息似乎是以固定格式来的,属性总是以相同的顺序出现(据我所知),因此我可以使用非常严格的模式匹配,如:

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

    但如果他们决定改变格式(而不解决问题),这看起来真的很棘手,当然会中断。

    有其他解决方案的建议吗?我主要关心的是找到需要转换为"的。我不太担心其他XML实体。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Jason C    15 年前

    不幸的是,如果XML的格式是那样的,那么您就不能想出在任何情况下都能工作的方法。

    我要做的是,首先,尝试将其解析为普通的XML。如果失败,返回到regex方法。这样,当这个XML的生产者被修复时,代码将自动开始做正确的事情。