Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 变压器&x27;s转换导致致命错误,为什么?_Java_Xml_Jaxp - Fatal编程技术网

Java 变压器&x27;s转换导致致命错误,为什么?

Java 变压器&x27;s转换导致致命错误,为什么?,java,xml,jaxp,Java,Xml,Jaxp,我使用JAXP构建了一个文档,如下所示: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); Element rootElement = document.createElement("Root"); for

我使用JAXP构建了一个文档,如下所示:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element rootElement = document.createElement("Root");

for (MyObject o : myCollection) {
    Element entry = document.createElement("Entry");
    Element entryItem = document.createElement("EntryItem");
    entryItem.appendChild(document.createTextNode(o.getProperty()));

    entry.appendChild(entryItem);
    rootElement.appendChild(entry);
}

document.appendChild(rootElement);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
System.out.println(result.getWriter().toString());
现在,当我尝试输出文档的XML时,如下所示:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element rootElement = document.createElement("Root");

for (MyObject o : myCollection) {
    Element entry = document.createElement("Entry");
    Element entryItem = document.createElement("EntryItem");
    entryItem.appendChild(document.createTextNode(o.getProperty()));

    entry.appendChild(entryItem);
    rootElement.appendChild(entry);
}

document.appendChild(rootElement);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
System.out.println(result.getWriter().toString());
它在
转换器上分离。transform
行出现以下错误:

FATAL ERROR:  'java.lang.NullPointerException'
       :null
我如何调试这个?我已确保
转换器
源代码
结果
不为空。

--文档如何


哦,对不起,显然第二部分在第一部分之后:)您使用的是哪种解析器?

我猜这是:

entryItem.appendChild(document.createTextNode(o.getProperty()));
已创建具有空值的文本节点。查看Xerces的代码(这是Oracle的JDK1.6附带的默认JAXP实现),我发现在构建文本节点时没有进行空验证。我怀疑这之后会导致
转换器
死亡

要么就是这样,要么就是JAXp配置有问题


您可能希望设置
jaxp.debug
系统属性(JDK 1.6+可用)以获取一些jaxp跟踪信息。

有人想猜一猜吗?很抱歉,我没有早点回复,我一定错过了回复通知。明天我会继续更新问题!