2017-08-31 1 views
0

Ich möchte das gesamte Tag zu XML hinzufügen, unten ist mein XML-Format.Python: das Hinzufügen neuer Daten in XML überlagert vorhandene Daten

<?xml version="1.0" encoding="UTF-8"?> 
<ca st="true" name="XMLConfig"> 
    <app> 
     <!--- I want to add entire commneted tag to XML . ! 
     <ar ty="co" name="st">  
      <ly ty="pt"> 
       <pt>value</pt> 
      </Layout> 
     </ar>     --> 

     <roll name="roll" fN="file.log" fP="logs.gz"> 
      <ly type="ptl"> 
       <pt>value</pt> 
      </ly> 
      <po> 
    <!--   Comment /> --> 
       <si size="100 MB" /> 
     <!--  Comment /> --> 
      </po> 
      <de fI="max" max="10"/> 
     </roll>  
    </app> 

wie in oben Datei angezeigt Ich möchte diesen Tag in der Datei

<ar ty="co" name="st">  
     <ly ty="pt"> 
      <pt>value</pt> 
     </Layout> 
    </ar> 

das ist, wo ich bisher ..

for appenders in tree.xpath('//Appenders'): 
    if appenders.getchildren(): 
     appenders.remove(appenders.getchildren()[0]) 
     appenders.insert(0, appenders.getparent().append(etree.fromstring('<ar ty="co" name="st"> <ly ty="pt"><pt>value</pt></Layout></ar>'))) 

dies alle anderen Inhalte zu entfernen erreicht hinzuzufügen, nachdem neuer Inhalt. jede Hilfe wird geschätzt.!

Antwort

1

Meiner Meinung nach ist der erste Weg, wie Sie es gemacht haben, viel besser. Sie haben gerade ein paar Fehler in Ihrer insert Linie sollte es sein:

appenders.insert(0, etree.fromstring('<ar ty="co" name="st"> <ly ty="pt"><pt>value</pt></ly></ar>'))) 

Ich bin überrascht, dass es nicht einen Fehler für Sie werfen haben, weil Ihr Einsatz Linie das ist im Grunde:

appenders.insert(0,None) 

Außerdem habe ich bemerkt, dass du etwas in all deinen Fragen machst:

  1. Sie lassen einige Zeilen Ihrer XML-Datei aus. (Ich meine warum?)
  2. Sie kürzen die Tag-Namen in Ihrem XML, aber Sie behalten ihre lange Version im Code, was irgendwie ärgerlich ist, weil die Person, die Sie beantworten möchte, den Code erneut ändern muss, um zu sehen, ob es funktioniert.
+0

Einverstanden, ich ging zurück und überprüft dies. Die erste Methode funktioniert so wie sie sollte. Danke für die Antwort,! Am 1.: Weil XML-Datei mehr als 200 Zeilen hat .. und ich denke, dass alle diese Details nicht benötigt werden. Am 2.: werde ich das ab jetzt onwords .. aufpassen! – tgcloud

+0

Ja, der erste Weg, den ich gemacht habe, ist mir appenders.insert (0, None) zu geben und Ausnahme zu werfen. aber ich schwöre, es funktionierte für mich vorher (Entfernen aller anderen Inhalte nach neuen Inhalten). Ich denke, ich habe etwas versaut, während ich den Code gepostet habe (ich sollte überhaupt keine Änderungen an Variablen vornehmen) – tgcloud

0

Ich habe es funktioniert,!

Wenn jemand bessere Möglichkeit hat, dies zu tun .. bitte lassen Sie mich wissen, damit ich dies verbessern kann.!

Verwandte Themen