如何替换XML中的空值

时间:2017-09-01 16:23:37

标签: java xml

我使用DOM解析器在xml文件中添加了一些标签。我正在使用DOM解析器创建一些新标签,并希望通过传递arraylist来设置它们的值。我的arraylist包含我从数据库中检索的值。

我的代码如下:

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而不是xml的null,并获取上面提到的表单 请帮忙......

3 个答案:

答案 0 :(得分: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));
    }
}

答案 1 :(得分:0)

这对你有用吗?

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

如果ns,这应该会使节点"null"为空。

答案 2 :(得分: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>

可能这就是你想要的