Java 如何替换XML中的空值

Java 如何替换XML中的空值,java,xml,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)))

我正在使用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>
我得到的输出:
1.
2.
3.
无效的
无效的
4.
); ; 诸如此类

预期输出:
1.
2.
3.
4.
我想删除从数据库到arraylist,而不是到xml的null,并获得上面提到的表单
请帮忙

这对你有用吗

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

如果
s
“null”
n
节点应该为空,这对您有用吗

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

空标记,则节点
n
应为空:
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){
    if(s != null) {
        Element n = doc.createElement("value");
        n.appendChild(doc.createTextNode(s));
    }
}
空标签:
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){
    if(s != null) {
        Element n = doc.createElement("value");
        n.appendChild(doc.createTextNode(s));
    }
}
我尝试了以下代码:

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>
a
可能这就是您想要的

我尝试了以下代码:

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>
a


可能这就是你想要的

你能在for循环中发布代码吗?我正在编辑我的代码…请看一下我想如果你不添加文本节点,它会自动折叠。我发布了一个答案,在追加之前检查字符串是否为空。你能在for循环中发布代码吗?我正在编辑我的代码…请看一看我认为如果你不添加文本节点,它会自动崩溃。我已经发布了一个答案,在添加之前检查字符串是否为null。尝试了类似的东西。类似的东西,但不完全是这个。正在获取null指针例外类似的东西。类似的东西,但不完全是这个。正在获取null指针例外它似乎将移除null的完整标记。我不想移除标记。我想要这肯定是一种尝试this@user8548920-阅读了更多内容后,我认为您希望添加节点,但要使用空值,即“
”。我已经相应地更新了我的第一个代码块。@user8548920-实际上这个答案表明
null
,或者不添加子项都是等效的。。。我刚刚发现了你的错误。删除
字符串.valueOf()
。你在强迫空值字符串化!你能把你以前的代码和这两个一起转发吗?它似乎会删除空的完整标记。我不想删除标记。我想这样做,我一定会尝试的this@user8548920-阅读了更多内容后,我认为您希望添加节点,但要使用空值,即“
”。我已经相应地更新了我的第一个代码块。@user8548920-实际上这个答案表明
null
,或者不添加子项都是等效的。。。我刚刚发现了你的错误。删除
字符串.valueOf()
。你在强迫空值字符串化!你能把你以前的代码和这两个代码一起转发吗