The_Punisher
03/07/2015, 14:18
De nuevo me paso por aquí a solicitar una ayuda "programática".
Estoy recibiendo datos en formato CAP, que está basado en XML, y necesito extraer dos campos, y algo se me escapa o no lo veo muy claro.
Las dos herramientas que he encontrado en Python (minidom y etree) no me devuelven los campos solicitados, me imagino que al no ser un XML estándar no hay manera de que encuentre los campos.
¿Alguna idea de como seleccionar esos campos? Me vale casi cualquier cosa, es un flujo continuo de datos, en el que tengo que ir extrayendo esos dos datos constantemente.
Un ejemplo de lo que recibo:
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:46+:00:002</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:46+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:46+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.79</cap:value> </cap:parameter> </cap:info> </cap:alert>
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:42+:00:004</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:42+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:42+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.80</cap:value> </cap:parameter> </cap:info> </cap:alert>
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:38+:00:006</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:38+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:38+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.80</cap:value> </cap:parameter> </cap:info> </cap:alert>
Perdón por el formato que coge el foro, yo quiero recuperar el valueName y value.
Un saludo!!
Estoy recibiendo datos en formato CAP, que está basado en XML, y necesito extraer dos campos, y algo se me escapa o no lo veo muy claro.
Las dos herramientas que he encontrado en Python (minidom y etree) no me devuelven los campos solicitados, me imagino que al no ser un XML estándar no hay manera de que encuentre los campos.
¿Alguna idea de como seleccionar esos campos? Me vale casi cualquier cosa, es un flujo continuo de datos, en el que tengo que ir extrayendo esos dos datos constantemente.
Un ejemplo de lo que recibo:
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:46+:00:002</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:46+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:46+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.79</cap:value> </cap:parameter> </cap:info> </cap:alert>
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:42+:00:004</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:42+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:42+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.80</cap:value> </cap:parameter> </cap:info> </cap:alert>
<?xml version="1.0" encoding="UTF-8"?> <cap:alert xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 CAP-v1.2-os.xsd "> <cap:identifier>Libelium_2015-07-01T16:38:38+:00:006</cap:identifier> <cap:sender>Libelium_Enviroment_400588116</cap:sender> <cap:sent>2015-07-01T16:38:38+:00:00</cap:sent> <cap:status>Actual</cap:status> <cap:msgType>Alert</cap:msgType> <cap:scope>Public</cap:scope> <cap:code>KPI</cap:code> <cap:info> <cap:category>Other</cap:category> <cap:event>Libelium</cap:event> <cap:urgency>Inmediate</cap:urgency> <cap:severity>Unknown</cap:severity> <cap:certainty>Observed</cap:certainty> <cap:onset>2015-07-01T16:38:38+:00:00</cap:onset> <cap:senderName>Libelium</cap:senderName> <cap:headline>Waspmote sensors</cap:headline> <cap:description>Sensor data from Waspmote devices: STR</cap:description> <cap:parameter> <cap:valueName>STR</cap:valueName> <cap:value>1.80</cap:value> </cap:parameter> </cap:info> </cap:alert>
Perdón por el formato que coge el foro, yo quiero recuperar el valueName y value.
Un saludo!!