2017-09-01 84 views
1

我使用DOM解析器在xml文件中添加了更多標籤。我正在使用DOM解析器創建一些新標籤,並希望通過傳遞數組列表來設置它們的值。我的arraylist包含我從數據庫中檢索的值。如何替換XML中的空值

我的代碼是如下:

loading file using dom parser 


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

    } 

我在這裏創造新的標籤,並在該標籤通過S的值。

Output I am getting: 

<value>1</value> 

<value>2</value> 

<value>3</value> 

<value>null</value> 

<value>null</value> 

<value>4</value> 

; ; 等

Expected output: 

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

<value>3</value> 

<value/> 

<value/> 

<value>4<value> 

我想刪除空是從DATABSE來ArrayList和比XML及以上 提到請幫忙弄形式...

+0

你可以發佈你的代碼循環? – AjahnCharles

+0

我有編輯我的代碼...請看看 – user8548920

+0

我想如果你不添加文本節點,它會自動崩潰。我發佈了一個答案,用於在追加之前檢查字符串是否爲空。 – AjahnCharles

回答

3

空標籤:

String.valueOf()迫使null轉換爲字符串"null"。只是刪除轉換和空標籤就會崩潰:

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

同樣的倒塌應該發生空字符串""(如果你正在做別的事情與字符串也可能是方便):

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)); 
} 

...或者你可以有條件地忽略孩子(也創建了一個摺疊的標籤):

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

沒有標籤:

如果你想忽略標籤完全可以做到這一點:

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

它似乎將刪除空標籤的完整標籤..我不想刪除標籤..我想這樣 user8548920

+0

肯定會試試這個 – user8548920

+0

@ user8548920 - 讀了更多一點,我想你想添加節點,但是有一個空值,即''「'。我已經更新了我的第一個代碼塊。 – AjahnCharles

0

將這項工作嗎?

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

這應該離開這個節點,如果ns"null"

+0

嘗試過類似的東西..有些類似的東西,但不完全這this..was獲取空指針異常 – user8548920

0

我嘗試下面的代碼:

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

,並得到如下結果:

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

也許這是你想要的