2017-09-01 17 views
1

DOMパーサを使用してXMLファイルにタグを追加しています。私はDOMパーサを使っていくつかの新しいタグを作成しており、arraylistを渡してその値を設定したいと思っています。私のarraylistは私がデータベースから取得している値を含んでいます。XMLのnull値を置き換える方法

私のコードは次のされています

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> 

に私は助けてくださいArrayListにdatabseから来ているヌルを削除し、XMLに比べてと 上記のようなフォームを取得したい...

+0

ループ? – AjahnCharles

+0

私のコードを編集しています...見てください – user8548920

+0

私はあなたがテキストノードを追加しないと自動的に崩壊すると思います。追加する前にStringがnullであるかどうかを調べる答えを投稿しました。 – AjahnCharles

答えて

3

空のタグ:

String.valueOf()がString "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 
    } 
} 

ありませんタグ:

0123を

あなたは完全にタグを省略したい場合は、あなたがこれを行うことができます:

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

s"null"ある場合、これは空のノードnを残す必要があります。

+0

これと同様のものを試しましたが、正確にはそうではありません。ヌルポインタ例外が発生しました。 – 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> 

このあなたが望むものです

関連する問題