2017-09-01 1 views
1

Ich füge einige weitere Tags in XML-Datei mithilfe von DOM-Parser. Ich erstelle einige neue Tags mit dem DOM-Parser und möchte ihre Werte durch Übergeben von Arraylist festlegen. Meine Arraylist enthält Werte, die ich aus der Datenbank abrufe.So ersetzen Sie Nullwerte in XML

Mein Code ist wie folgt:

loading file using dom parser 


    for(String s:a.List){ 
Element n= doc.createElement("value"); 
n.appendChild(doc.createTextNode(String.valueOf(s))); 

    } 

ich hier neuen Tag bin die Schaffung und in diesen Variablenwert von s vorbei.

Output I am getting: 

<value>1</value> 

<value>2</value> 

<value>3</value> 

<value>null</value> 

<value>null</value> 

<value>4</value> 

; ; so weiter

Expected output: 

<value>1</value> 
<value>2</value> 

<value>3</value> 

<value/> 

<value/> 

<value>4<value> 

Ich möchte null entfernen, die von databse kommt zu Arraylist und als zu xml und erhalten Sie bitte oben wie erwähnt Bitte helfen ...

+0

Können Sie den Code in Ihrem für Schleife? – AjahnCharles

+0

Ich habe meinen Code bearbeitet ... bitte sehen Sie – user8548920

+0

Ich denke, wenn Sie keinen Textknoten hinzufügen, wird es automatisch zusammenbrechen. Ich habe eine Antwort geschrieben, die überprüft, ob der String vor dem Anhängen null ist. – AjahnCharles

Antwort

3

Leere Schlagwörter:

Die String.valueOf() ist null zwingt zum "null" String umgewandelt werden. Entfernen Sie einfach, dass die Umwandlung und die Null-Tags werden kollabieren:

for(String s : a.List){ 
    Element n = doc.createElement("value"); 
    n.appendChild(doc.createTextNode(s)); // null renders as empty 
} 

Das gleiche Kollabieren für leere Strings passieren sollte "" (was sehr praktisch sein könnte, wenn Sie etwas anderes mit dem String zu tun):

for(String s : a.List){ 
    Element n = doc.createElement("value"); 
    if(s == null) { s = ""; } // force nulls to be empty Strings 
    n.appendChild(doc.createTextNode(s)); 
} 

... oder Sie das Kind bedingt weglassen kannst (was einen kollabierte Tag erzeugt auch):

for(String s : a.List){ 
    Element n = doc.createElement("value"); 
    if(s != null) { 
     n.appendChild(doc.createTextNode(s)); // only append non-null values 
    } 
} 

No Tags:

Wenn Sie den Tag ganz weglassen wollte könnten Sie dies tun:

for(String s : a.List){ 
    if(s != null) { 
     Element n = doc.createElement("value"); 
     n.appendChild(doc.createTextNode(s)); 
    } 
} 
+0

scheint es wird vollständige Tags von Null entfernen .. Ich möchte nicht entfernen Tag .. Ich möchte so user8548920

+0

wird sicherlich versuchen Sie dies – user8548920

+0

@ user8548920 - Nachdem ich ein bisschen mehr gelesen habe, denke ich, dass Sie den Knoten hinzufügen möchten, aber mit einem leeren Wert, dh "" ".Ich habe meinen ersten Codeblock entsprechend aktualisiert. – AjahnCharles

0

Würden diese Arbeit für Sie?

String value = String.valueOf(s); 
if (! 'null'.equals(value)) { n.appendChild(doc.createTextNode(value)); } 

den Knoten n leer, wenn s"null" Dieser sollte verlassen.

+0

versuchte ähnliches Zeug .. etwas wie das, aber nicht genau das .. bekam null Zeiger Ausnahme – user8548920

0

Ich habe unten Code versuchen:

for(String b:a) 
{ 
    Element valuesElements = doc.createElement("values"); 
    if(b!=null) 
    { 
     valuesElements.appendChild(doc.createTextNode(b)); 
    } 
     rootElement.appendChild(valuesElements); 
} 

und unten Ergebnis:

<root><values>a</values><values/></root> 

Wahrscheinlich diese ist was Sie wollen