Error deleting python XML element

I read the tree from the file as a string and removed namespaces from it.

with open(pathArxmlFileName, 'r') as myfile:
    data=myfile.read();
data = re.sub(' xmlns="[^"]+"', '', data, count=1)
self.root = ET.fromstring(data);        
self.tree =  ET.ElementTree(self.root)

I want to remove an XML element from this tree

I tried:

for EL in self.root.iter('tagString'):
    self.root.remove(EL);

Find EL elements, but when I call the remove () function, it throws an error:

   self._children.remove(element)
ValueError: list.remove(x): x not in list

Please help me, I do not know what to do: (

Ps: Modifying a tree by changing the value of an element works

+4
source share
2 answers

, , tagString, . "tagString" , , .

XML:

<RootElement>
  <Child>
    <tagString/>
  </Child>
</RootElement>

, :

root.remove(EL)

root - "RootElement", EL - "tagString".

- , <tagString> <RootElement> !

, ElementTree, - :

for EL in self.root.iter():
    for child in list(EL):
        if child.tag == "tagString":
            EL.remove(child)

. , - , , , appopriate, .

+3

:

for EL in self.root.iter('tag1'):
    if parameterFound == True:
        break;
    for numValue in EL.findall('tag2'):#finds only direct childrens
        [name, val]=self.__getParameterNameAndValue(numValue);
        if name == paramNameToDel:
            parameterFound = True;
            EL.remove(numValue);
            break;
    for numValue in EL.findall('tag3'):#finds only direct childrens
        [name, val]=self.__getParameterNameAndValue(numValue);
        if name == paramNameToDel:
            parameterFound = True;
            EL.remove(numValue);
            break;
return parameterFound
+1

All Articles