我使用此代码构建DOM文档:
private org.w3c.dom.Document createXml(WorkObject workObject, String hierarchy, String dateFormat) {
XMLBuilder2 builder = XMLBuilder2.create(hierarchy);
Map<String, Object> localVariables = workObject.getLocalVariablesMap();
builder = createXmlFromMap(localVariables, builder, dateFormat);
Properties outputProperties = new Properties();
outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "no");
String xmlString = builder.asString(outputProperties);
LOG.debug("XML string: " + xmlString);
org.w3c.dom.Document xmlDoc = builder.getDocument();
LOG.debug("DOM root element: " + xmlDoc.getDocumentElement().getTagName());
return xmlDoc;
}
builder.asString()
调用返回预期的XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<myVar>a value</myVar>
<docId>GEAR-b3384419-36f8-48fc-b194-c937e7afc0dd</docId>
</root>
最后一个LOG语句的输出符合预期root
。
但是当我使用这段代码时,xmlDoc
似乎很奇怪......
将xmlDoc
传递给此构造函数时:
private org.w3c.dom.Document mXmlDoc;
public XmlMailMergeDataSet(org.w3c.dom.Document xmlDoc) {
mXmlDoc = xmlDoc;
}
在IDEA中调试时,xmlDoc
和mXmlDoc
的值为[#document: null]
不幸的是,我无法进一步调试以查看当时发生的事情,因为传递XmlMailMergeDataSet的代码不是开源的。
我错过了一些明显的东西吗?
答案 0 :(得分:1)
[#document: null]
并不意味着Document
引用为空,也不是树是空的。它只是作为评估xmlDoc.toString())
的结果的字符串表示。我想null
这里是&#34;节点值&#34;文档节点在这种情况下没有意义(Document
是Node
的特殊子类型。)
因此Document
实例在您的代码中似乎没有任何问题。