【问题标题】:Lua XML extract from pattern从模式中提取的 Lua XML
【发布时间】:2014-06-26 20:25:18
【问题描述】:

一个应用程序正在向我的脚本发送一个像这样的流:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <aRootChildNode>
    <anotherChildNode>
     <?xml version="1.0">
     <TheNodeImLookingFor>
       ... content ...
     </TheNodeImLookingFor>
    </anotherChildNode>
   </aRootChildNode>
</root>

我想提取TheNodeImLookingFor 部分。 到目前为止,得到:

data = string.match(Stream, "^.+\<TheNodeImLookingFor\>.+\<\/TheNodeImLookingFor\>.+$")

模式在流中被识别,但它不提取节点及其内容。

【问题讨论】:

    标签: string lua pattern-matching lua-patterns


    【解决方案1】:

    一般来说,使用模式匹配(Lua 模式或正则表达式)来提取 XML 并不是一个好主意。使用 XML 解析器。

    对于这个问题,你不需要转义\&lt;(即使你这样做了,Lua 模式使用% 来转义魔术字符)。并使用方括号获取节点及其内容:

    data = string.match(Stream, "^.+(<TheNodeImLookingFor>.+</TheNodeImLookingFor>).+$")
    

    或者只获取内容:

    data = string.match(Stream, "^.+<TheNodeImLookingFor>(.+)</TheNodeImLookingFor>.+$")
    

    【讨论】:

    • 没关系,我发现另一篇文章或多或少地解释了如何提取节点及其内容。我做了以下事情:for att, cont in data:gmatch'&lt;Request.+&gt;.+&lt;/Request&gt;' do {whatever} end
    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多