2016-03-28 7 views
1

Ich habe eine XML-Datei, und manchmal muss ich einige Knoten löschen.löschen Kind und Rückgabe Wagen von xml

Dies ist mein Code:

String xmlProduct = ""; //my xml above 
    if(!xmlProduct.equals("")){ 
     InputSource is = new InputSource(); 
     is.setCharacterStream(new StringReader(xmlProduct)); 
     Document dom; 
     DocumentBuilderFactory dbf = (DocumentBuilderFactory) DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = (DocumentBuilder) dbf.newDocumentBuilder(); 
     dom = db.parse(is); 
     dom.normalize(); 


    //delete property 


    NodeList nodoProperty = dom.getDocumentElement().getElementsByTagName("Property"); 

    for(int i=0; i<nodoProperty.getLength(); i++){ 
     Node nodoBorrar = nodoProperty.item(i); 
     nodoRaizXML.item(0).removeChild(nodoBorrar); 

    } 
} 

//Convert to xml format 

    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer transformer = tf.newTransformer(); 
    StringWriter writer = new StringWriter(); 
    transformer.transform(new DOMSource(dom), new StreamResult(writer)); 

Dies ist ein Beispiel meiner xml ist:

<Deal> 
    <SelectedDeal>+1</SelectedDeal> 
</Deal> 
<Property> 
    <PropertyId>8215</PropertyId> 
    <HPIValueChanged>1</HPIValueChanged> 
</Property> 
<FundBooking> 
    <ProductCode>J128R?</ProductCode> 
    <ControlNumber>   </ControlNumber> 
    </FundBooking> 

Und das ist, was ich bekam bei der Ausführung:

<Deal> 
    <SelectedDeal>+1</SelectedDeal> 
</Deal> 


<FundBooking> 
    <ProductCode>J128R?</ProductCode> 
    <ControlNumber>   </ControlNumber> 
</FundBooking> 

den Tag gelöscht, aber ich muss seinen Platz in der Datei löschen.

Wie kann ich dies tun

+1

Und wie schreiben Sie Ihre xml huh auf die Datei zurück ?? – Antoniossss

+0

Ich habe meinen Code mit der Konvertierung aktualisiert – cucuru

Antwort

1

Dies ist die schnelle & Schmutz Lösung:

xmlProduct = xmlProduct.replaceAll("\n", "").replaceAll("\r", ""); 
//... 
Transformer transformer = tf.newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
+0

Sorry, ich bin ein bisschen verloren, ich verstehe nicht, welche Variable ist xmlProperty – cucuru

+0

@cucuru Entschuldigung, ich habe die Antwort korrigiert. Im Grunde ersetzen Sie alle Zeilenumbrüche und Zeilenumbrüche vor dem Parsen aus der XML-Zeichenfolge und weisen dann den Transformer an, die Ausgabe einzurücken. –

+0

danke! es funktioniert nicht, ich kann nicht verstehen, was passiert! – cucuru