如何删除此警告:com.sun.org.apache.xerces.internal.dom.DOMImplementationImpl是Sun专有API,可能会在以后的版本中删除

Moh*_*sin 4 java compiler-warnings

import com.sun.org.apache.xerces.internal.dom.DOMImplementationImpl;
public static Document newDocument( String pName ) {

    return DOMImplementationImpl.getDOMImplementation().createDocument(
        null,
        pName,
        DOMImplementationImpl.getDOMImplementation().createDocumentType( pName, null, null ) );

}
Run Code Online (Sandbox Code Playgroud)

我在netbeans中遇到过以下警告

warning: com.sun.org.apache.xerces.internal.dom.DOMImplementationImpl is Sun proprietary API and may be removed in a future release
return DOMImplementationImpl.getDOMImplementation().createDocument(


warning: com.sun.org.apache.xerces.internal.dom.DOMImplementationImpl is Sun proprietary API and may be removed in a future release DOMImplementationImpl.getDOMImplementation().createDocumentType( pName, null, null ) );                
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

不要引用具体的DOMImplementation.相反,使用:

DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
DOMImplementation implementation = registry.getDOMImplementation("XML 1.0");
DocumentType type = implementation.createDocumentType(pName, null, null);
Document document = implementation.createDocument(null, pname, type);    
Run Code Online (Sandbox Code Playgroud)

或者,使用一个相当少的工厂密集的XML API,如JDOM :)(我总是发现Java W3C DOM API是一个完全痛苦的工作.)

另一种替代方法是使用具体的DOMImplementation,但将其作为外部DOMImplementation而不是依赖于JDK中内置的实现.这可能仍然是Apache Xerces,只是来自jar文件.