Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在DOM文档中创建空文本节点_Java_Xml_Domdocument_String_Transformer - Fatal编程技术网

Java 在DOM文档中创建空文本节点

Java 在DOM文档中创建空文本节点,java,xml,domdocument,string,transformer,Java,Xml,Domdocument,String,Transformer,在使用Transformer编写XML文件时,如何在DOM文档中创建空节点而不获取java.lang.NullPointerException 我正在使用element.appendChild(documnet.createTextNode(nodeValue))编写一个XML文档,其中一些节点可能具有空值 在这里,这个nodeValue可以是一个空字符串,也可以说是null或空值,那么我们如何强制它编写这个空文本节点,比如或 如果我只是用空值编写这个节点,Transformer在将文档转换为X

在使用
Transformer
编写XML文件时,如何在DOM文档中创建空节点而不获取
java.lang.NullPointerException

我正在使用
element.appendChild(documnet.createTextNode(nodeValue))编写一个XML文档,其中一些节点可能具有空值

在这里,这个nodeValue可以是一个空字符串,也可以说是null或空值,那么我们如何强制它编写这个空文本节点,比如

如果我只是用空值编写这个节点,
Transformer
在将文档转换为XML时抛出
NullPointerException


需要避免此空指针异常,并允许此空节点以输出XML的方式运行。

好吧,我在这里发现了错误

我正在使用
element.appendChild(documnet.createTextNode(nodeValue))
将空值或空值写入节点。这是不正确的

我应该简单地创建元素并让它保持这样,而不尝试将null写为TextNode值。因为empty或null永远不能是TextNode

因此,我必须在代码中格外小心,避免尝试编写空值。 换句话说,首先检查该值,如果该值不为null,则仅作为TextNode写入,否则只需写入元素,并让序列化程序在转换时对其进行解释

Element childElem = document.createElement("Child");
rootElement.appendChild(childElem);
如果某个字符串不是空的,那么

childElem.appendChild(document.createTextNode(someString));

如果您使用的是Java SE org.w3c.dom,那么只有在附加
null
子级时,才会得到NullPointerException。如果附加无子节点空文本节点,则会得到一个空元素,但不会得到
空点异常

例如,假设您在DOM中创建以下元素:

Element root = doc.createElement("root");

Element textNode = doc.createElement("textNode");
Element emptyTextNode = doc.createElement("emptyTextNode");
Element emptyNode = doc.createElement("emptyNode");
Element nullNode = doc.createElement("nullTextNode");

textNode.appendChild(doc.createTextNode("not empty")); // <textNode>not empty</textNode>
emptyTextNode.appendChild(doc.createTextNode(""));     // <emptyTextNode></emptyTextNode>
// emptyNode: no child appended                           <emptyNode /> 
nullNode.appendChild(null);                            // null child appended - causes NPE!!

root.appendChild(textNode);
root.appendChild(emptyTextNode);
root.appendChild(emptyNode);
root.appendChild(nullNode);

谢谢,我已经意识到了我的错误,但是这个答案有助于从技术上更好地理解这个问题。重要的是空字符串也可以工作,所以最好先用空字符串替换所有空值。在我的例子中,将小数据库表中的null值更新为空字符串。
<root>
  <textNode>not empty</textNode>
  <emptyTextNode/>
  <emptyNode/>
  <nullTextNode/>
</root>