我是一個使用LUA的菜鳥。我正在試圖在這個標簽“<>”內的 XML 中提取一些文本
<?xml version="1.0" encoding="UTF-8"?>
<ejemplar gaceta="Gaceta de Notificaciones de la Dirección Divisional de Patentes" volumen="12 de mayo" fecha_puesta_circulacion="12 de mayo de 2022" schemaLocation="http://siga.impi.gob.mx/resources/xsd/gaceta.xsd">
<seccion nombre="Solicitudes de Patentes">
<ficha>
<campo>
<clave><![CDATA[Número del Oficio]]></clave>
<valor><![CDATA[42207]]></valor>
</campo>
<campo>
<clave><![CDATA[Fecha del Oficio]]></clave>
<valor><![CDATA[10 de Mayo de 2022]]></valor>
</campo>
<campo>
<clave><![CDATA[Descripción general del asunto]]></clave>
<valor><![CDATA[Procede el otorgamiento.]]></valor>
</campo>
我想提取此文本以將其放在多個變數上
<ejemplar gaceta="Gaceta de Notificaciones de la Dirección Divisional de Patentes" volumen="12 de mayo" fecha_puesta_circulacion="12 de mayo de 2022" schemaLocation="http://siga.impi.gob.mx/resources/xsd/gaceta.xsd">
并最終獲得
gaceta = "Gaceta de Notificaciones de la Dirección Divisional de Patentes"
volumen = 12 de mayo
fecha_puesta_circulacion="12 de mayo de 2022"
uj5u.com熱心網友回復:
如果使用 XML 工具和 API,從 XML 檔案中提取資訊會容易得多。您要提取的資訊是不同屬性的值。
ejemplar您可以使用此 XPath 從元素中選擇所有這些:/ejemplar/@*
如果您只想要名為的屬性gaceta:/ejemplar/@gaceta
檔案中的所有屬性?//@*
不確定 LUA 中 XML 和 XPath 支持的最佳庫是什么,但一些快速搜索指向:https ://github.com/bkersten/lua-xpath ,
uj5u.com熱心網友回復:
用于string.gmatch將字串拆分name=value成對
local str = [=[
<?xml version="1.0" encoding="UTF-8"?>
<ejemplar gaceta="Gaceta de Notificaciones de la Dirección Divisional de Patentes" volumen="12 de mayo" fecha_puesta_circulacion="12 de mayo de 2022" schemaLocation="http://siga.impi.gob.mx/resources/xsd/gaceta.xsd">
<seccion nombre="Solicitudes de Patentes">
<ficha>
<campo>
<clave><![CDATA[Número del Oficio]]></clave>
<valor><![CDATA[42207]]></valor>
</campo>
<campo>
<clave><![CDATA[Fecha del Oficio]]></clave>
<valor><![CDATA[10 de Mayo de 2022]]></valor>
</campo>
<campo>
<clave><![CDATA[Descripción general del asunto]]></clave>
<valor><![CDATA[Procede el otorgamiento.]]></valor>
</campo>
]=]
local ejemplars = {}
for ejemplar in str:gmatch"<ejemplar (.-)>" do
local vars = {}
for name, value in ejemplar:gmatch'([%w_] )="(.-)"' do
vars[name] = value
end
table.insert(ejemplars, vars)
end
for j = 1, #ejemplars do
print(ejemplars[j].gaceta)
print(ejemplars[j].volumen)
print(ejemplars[j].fecha_puesta_circulacion)
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478396.html
