Java 相同的org.w3c.dom.Document变量的行为不同
Java 相同的org.w3c.dom.Document变量的行为不同,java,xml,xslt,Java,Xml,Xslt,w3c.dom.Document可以用作节点,但是当我尝试这样做时 public static Object tranform(Source source) { Object result = null; try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer newTransformer = tf.newTransfor
w3c.dom.Document
可以用作节点
,但是当我尝试这样做时
public static Object tranform(Source source) {
Object result = null;
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer newTransformer = tf.newTransformer();
newTransformer.transform(source, (Result) result);
} catch (TransformerException ex) {
Logger.getLogger(XMLUtils.class.getName()).log(Level.SEVERE, null, ex);
}
return result;
}
在另一个文件上
Document doc = (Document) XMLUtils.tranform(source);
// pass this doc to a function that that a Node typed parameter
if (node == null) {
return;
} else {
...
}
节点
将始终为空,并且它也没有子节点。
我尝试将每种类型的源代码转换为每种类型的结果,编码人员将返回的结果转换为他们需要的正确类型。那么你能不能
1) 解释我的错误?
2) 给我一个如何实现这个目标的提示
感谢您并向您致意我认为您需要创建一个实现
Result
的类,例如DOMResult
:
Result result = new DOMResult();
newTransformer.transform(source, result);
return result.getNode();
除了在transform函数中指定结果的类型之外,还有什么解决方法吗?我的意图是创建一个可以将任何类型的源转换为任何类型的结果的函数,然后调用方可以以某种方式将结果转换为特定类型。您可以编写一个返回类型为
result
的方法,但您必须创建一个实现result
的类的实例才能获得任何结果对象。如果希望调用者接收DOM文档
或节点
,则需要创建它,仅传递null
值不会创建任何具体的结果对象。此外,我认为没有办法将DOMResult
强制转换为DOM节点
,您需要调用DOMResult
的getNode
方法。如果您使用其他类型的结果类,就我对API的理解而言,没有办法将它们神奇地转换为DOM节点。谢谢您的想法。我只是假设,因为所有类型的结果在其核心都是XML,所以它们应该能够相互转换。