2

我目前正在使用以下代码来解析 Xml 文件的一部分(我首先将整个文件读入单个字符串)。

for xmlMatch in xmlString:gmatch("<MyXmlElement.*</MyXmlElement>") do
    -- Do something.
end

我遇到的问题是 for 循环只执行一次,因为 gmatch 函数只返回一个字符串,该字符串从 MyXmlElement 的第一个实例开始,到 MyXmlElement 的最后一个实例的关闭结束。如何解析字符串,以便在第一次"</MyXmlElement>"找到字符串时匹配模式(而不仅仅是最后一种情况)?

4

1 回答 1

9

这里有3个问题:

  • gmatch 从字符串中返回捕获的子字符串,因此您需要在要在循环中使用的内容周围使用 ()
  • 为了匹配尽可能少的字符,您应该将.-其用作模式,直到第一个可能</MyXmlElement>
  • 你需要在 for 之后的变量(但我想这只是一个错字)

所以大家一起:

for att,cont in XmlString:gmatch'<MyXmlElement%s*(.-)>(.-)</MyXmlElement>' do
    -- something
end

应该做的伎俩。

于 2011-02-17T10:03:49.870 回答