文本文件的解析 - Lua

我有一个包含以下内容的文本文件:

<Response>
    <IP>17.178.96.59</IP>
    <CountryCode>US</CountryCode>
    <CountryName>美国</CountryName>
    <RegionCode></RegionCode>
    <RegionName></RegionName>
    <City>芝加哥</City>
    <ZipCode></ZipCode>
    <TimeZone>美国/中部</TimeZone>
    <Latitude>37.751</Latitude>
    <Longitude>-97.822</Longitude>
    <MetroCode>0</MetroCode>
</Response>

如何删除每个字段,以便我只得到以下内容:

17.178.96.59, US, 美国, nil, nil, 芝加哥, nil, 美国/中部, 37.751, -97.822, 0

使用Lua脚本。

点赞
用户1442917
用户1442917

你没有展示出你已经尝试过什么,但是最近有一个讨论过的 SO 问题,这个问题涉及如何迭代 XML 节点,它应该可以很好地解决你的问题。只需将固定元素名称替换为 [%w_]+ 等内容,并将解析的值收集到一个表中,你就可以得到你想要的结果。

2020-03-23 17:20:41
用户3670853
用户3670853
这是我要做的事情。

int = getInternet() url3 = 'https://freegeoip.app/xml/17.178.96.59' result = int.getURL(url3) result = result:gsub("><",">nil<"):gsub("<.->",""):gsub("%c%s+",","):sub(2)..'nil'

print(result) -- = 17.178.96.59,US,United States,nil,nil,nil,nil,America/Chicago,37.751,-97.822,0,mil

geoResult = {}

for word in string.gmatch(result, '([^,]+)') do --print(word) table.insert(geoResult, word) --for i,v in ipairs(result) do print(i,v) end end

print('IP : '..geoResult[1]) print('Country ID : '..geoResult[2]) print('Country Name : '..geoResult[3]) print('Region Code : '..geoResult[4]) print('Region Name : '..geoResult[5]) print('City : '..geoResult[8]) print('ZIP Code : '..geoResult[7]) print('Time Zone : '..geoResult[8]) print('Latitude : '..geoResult[9]) print('Longitude : '..geoResult[10]) print('Metro Code : '..geoResult[11])

-- result: 17.178.96.59,US,United States,nil,nil,nil,nil,America/Chicago,37.751,-97.822,0,nil

IP : 17.178.96.59 Country ID : US Country Name : United States Region Code : nil Region Name : nil City : America/Chicago ZIP Code : nil Time Zone : America/Chicago Latitude : 37.751 Longitude : -97.822 Metro Code : 0

```

2020-03-24 01:18:12