Quantcast
Viewing all articles
Browse latest Browse all 101

xpath from lxml cannot find closing tag of arxml file (sub-child node)

I need human help to find my mistake in the code; unfortunately i cud not explain the problem to chatgpt :)So, I am parsing arxml file using lxml and xpath. Below is my code snipet:

import ostry:    from lxml import etree    #import xml.etree.ElementTree as etree    print("lxml package already installed")except:    print("installing missing lxml package")    import pip    pip.main(['install','lxml'])    from lxml import etreearxmlFile = "./input/EcucValues.arxml"tree = etree.parse(arxmlFile)try:    root = tree.getroot()    print("root tag found")    #print(root.tag)    #print(root.attrib)except:    print("root in arxml missing")subcontainersExp = "//*[local-name() = 'SUB-CONTAINERS']/*[local-name() = 'ECUC-CONTAINER-VALUE']"subcontainers = root.xpath(subcontainersExp)for subcontainer in subcontainers:    subarxml = etree.tostring(subcontainer)    print(subarxml)

The input EcucValue.arxml(only a relevant sample) file is as follows:

<?xml version="1.0" encoding="utf-8"?><AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-2-2.xsd"><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>TEXT</SHORT-NAME><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>UBK</SHORT-NAME><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>Project</SHORT-NAME><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>EcucModuleConfigurationValuess</SHORT-NAME><ELEMENTS><ECUC-MODULE-CONFIGURATION-VALUES><SHORT-NAME>Adc</SHORT-NAME><DEFINITION-REF DEST="ECUC-MODULE-DEF">Adc</DEFINITION-REF><CONTAINERS><ECUC-CONTAINER-VALUE><SHORT-NAME>Adc_ConfigSet</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet</DEFINITION-REF><SUB-CONTAINERS><ECUC-CONTAINER-VALUE><SHORT-NAME>adc1</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_CalibAlterText</DEFINITION-REF><VALUE>AN11</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_Calibratable</DEFINITION-REF><VALUE>true</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_1</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>adc2</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_0CustSpecName</DEFINITION-REF><VALUE>text2</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_2</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1TriggerSource</DEFINITION-REF><VALUE>Background</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>adc3</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_CalibAlterText</DEFINITION-REF><VALUE>AN09</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_Calibratable</DEFINITION-REF><VALUE>true</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_3</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE></SUB-CONTAINERS></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>Adc_General</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_General</DEFINITION-REF><PARAMETER-VALUES><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-FLOAT-PARAM-DEF">Adc/Adc_General/Adc_BackGroundTriggerPeriod</DEFINITION-REF><VALUE>1000</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_General/Adc_RequestCompatibility</DEFINITION-REF><VALUE>New</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_General/Adc_RequestHandling</DEFINITION-REF><VALUE>Strict</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE></CONTAINERS></ECUC-MODULE-CONFIGURATION-VALUES></ELEMENTS></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AUTOSAR>

(imagined)expected output: subarxml has xml data (below shown only output of subcontainers[0] from the for-loop which will show 3 output in total)

<ECUC-CONTAINER-VALUE><SHORT-NAME>adc1</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_CalibAlterText</DEFINITION-REF><VALUE>AN11</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_Calibratable</DEFINITION-REF><VALUE>true</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_1</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE>

actual output: subarxml has xml data

<ECUC-CONTAINER-VALUE><SHORT-NAME>adc1</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_CalibAlterText</DEFINITION-REF><VALUE>AN11</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_Calibratable</DEFINITION-REF><VALUE>true</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_1</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>adc2</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_0CustSpecName</DEFINITION-REF><VALUE>text2</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_2</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1TriggerSource</DEFINITION-REF><VALUE>Background</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>adc3</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_ConfigSet/Adc_Signal</DEFINITION-REF><PARAMETER-VALUES><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_CalibAlterText</DEFINITION-REF><VALUE>AN09</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_Calibratable</DEFINITION-REF><VALUE>true</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">Adc/Adc_ConfigSet/Adc_Signal/Adc_1ConnectedTo</DEFINITION-REF><VALUE>ADC_0_3</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE></SUB-CONTAINERS></ECUC-CONTAINER-VALUE><ECUC-CONTAINER-VALUE><SHORT-NAME>Adc_General</SHORT-NAME><DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">Adc/Adc_General</DEFINITION-REF><PARAMETER-VALUES><ECUC-NUMERICAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-FLOAT-PARAM-DEF">Adc/Adc_General/Adc_BackGroundTriggerPeriod</DEFINITION-REF><VALUE>1000</VALUE></ECUC-NUMERICAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_General/Adc_RequestCompatibility</DEFINITION-REF><VALUE>New</VALUE></ECUC-TEXTUAL-PARAM-VALUE><ECUC-TEXTUAL-PARAM-VALUE><DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">Adc/Adc_General/Adc_RequestHandling</DEFINITION-REF><VALUE>Strict</VALUE></ECUC-TEXTUAL-PARAM-VALUE></PARAMETER-VALUES></ECUC-CONTAINER-VALUE></CONTAINERS></ECUC-MODULE-CONFIGURATION-VALUES></ELEMENTS></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AR-PACKAGE></AR-PACKAGES></AUTOSAR>

This makes the output subarxml an invalid xml data. and hence I cannot parse subarxml futher using xpath.

Please help me understand the mistake. Unfortunately, lxml documentation did not help much and neither cud I find any help from google search.


Viewing all articles
Browse latest Browse all 101

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>