Разбор текстового файла - Lua - PullRequest
1 голос
/ 23 марта 2020

У меня есть текстовый файл, содержащий:

<Response>
    <IP>17.178.96.59</IP>
    <CountryCode>US</CountryCode>
    <CountryName>United States</CountryName>
    <RegionCode></RegionCode>
    <RegionName></RegionName>
    <City>Chicago</City>
    <ZipCode></ZipCode>
    <TimeZone>America/Chicago</TimeZone>
    <Latitude>37.751</Latitude>
    <Longitude>-97.822</Longitude>
    <MetroCode>0</MetroCode>
</Response>

Как удалить каждый и поэтому я получаю только:

17.178.96.59, США, США, ноль, ноль, чика go, ноль, Америка / Чика go, 37,751, -97,822, 0

Использование сценария Lua.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Это то, что я пытаюсь сделать.

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 
0 голосов
/ 23 марта 2020

Вы не показываете то, что уже пробовали, но недавно обсуждался ТАК вопрос о том, как перебирать XML узлов, которые должны хорошо работать для ваших целей. Просто замените имена фиксированных элементов чем-то вроде [%w_]+ и соберите проанализированные значения в таблицу, и вы получите результат, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...