Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 相同的org.w3c.dom.Document变量的行为不同_Java_Xml_Xslt - Fatal编程技术网

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,所以它们应该能够相互转换。