Java DocumentBuilder.newDocument()返回null
这是我没有预料到的,文档没有说明这是否可能,但在调用DocumentBuilder的newDocument()方法后,它返回null:Java DocumentBuilder.newDocument()返回null,java,xml,Java,Xml,这是我没有预料到的,文档没有说明这是否可能,但在调用DocumentBuilder的newDocument()方法后,它返回null: // Initialize the DocumentBuilderFactory and DocumentBuilder factories. try { m_docFactory = DocumentBuilderFactory.newInstance(); m_Log.error("m_docFactory i
// Initialize the DocumentBuilderFactory and DocumentBuilder factories.
try {
m_docFactory = DocumentBuilderFactory.newInstance();
m_Log.error("m_docFactory is {}", m_docFactory);
m_docBuilder = m_docFactory.newDocumentBuilder();
m_Log.error("m_docBuilder is {}", m_docBuilder);
m_doc = m_docBuilder.newDocument();
m_Log.error("m_doc is {}", m_doc);
m_xpath = XPathFactory.newInstance().newXPath();
m_QCodeParameters = new QCodeParameters();
}
catch (DOMException e) {
m_Log.error(e.toString());
}
catch (ParserConfigurationException e) {
m_Log.error(e.toString());
}
我得到的结果是
m_docFactory is org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@f20d394c
m_docBuilder is org.apache.xerces.jaxp.DocumentBuilderImpl@a7ce296c
m_doc is [#document: null]
我丢了一个罐子吗?奇怪 它不会返回
null
,否则它会打印m\u doc为null
。但是,您刚刚构建的文档的toString
方法正在被调用,并且是类org.apache.xerces.dom.NodeImpl中的以下方法:
/** NON-DOM method for debugging convenience. */
public String toString() {
return "["+getNodeName()+": "+getNodeValue()+"]";
}
/**
* Returns the node value.
* @throws DOMException(DOMSTRING_SIZE_ERR)
*/
public String getNodeValue()
throws DOMException {
return null; // overridden in some subclasses
}
getNodeValue()
正在返回null
如果您在NodeImpl
中检查该方法:
/** NON-DOM method for debugging convenience. */
public String toString() {
return "["+getNodeName()+": "+getNodeValue()+"]";
}
/**
* Returns the node value.
* @throws DOMException(DOMSTRING_SIZE_ERR)
*/
public String getNodeValue()
throws DOMException {
return null; // overridden in some subclasses
}
尝试访问m_doc
的某些属性并愉快地编码
干杯 对象本身不是空的,尽管文档没有任何内容。您应该将子元素附加到它。是m_doc==null
,还是仅仅是如果没有根元素,m_doc的toString()
方法返回null?