Xerces确实与JDK捆绑在一起,但是您应该将其与JAXP API一起使用
javax.xml.parsers。检查以下程序的输出。
另外,要序列化XML
document,应使用DOM Level 3 Load and
Save(在JDK中存在)或不带样式表的XSLT转换(标识转换)。其余的取决于特定的实现。Xerces XMLSerializer已弃用:
不推荐使用。Xerces 2.9.0中不推荐使用该类。建议新应用程序使用DOM Level 3
LSSerializer或JAXP的XML转换API(TrAX)来序列化XML。有关更多信息,请参见Xerces文档。
这是使用DOM级别3进行序列化的示例:
import org.w3c.dom.*;import org.w3c.dom.bootstrap.DOMImplementationRegistry;import org.w3c.dom.ls.*;public class DOMExample3 { public static void main(String[] args) throws Exception { DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("XML 3.0 LS 3.0"); if (impl == null) { System.out.println("No DOMImplementation found !"); System.exit(0); } System.out.printf("DOMImplementationLS: %sn", impl.getClass().getName()); LSParser parser = impl.createLSParser( DOMImplementationLS.MODE_SYNCHRONOUS, "http://www.w3.org/TR/REC-xml"); // http://www.w3.org/2001/XMLSchema System.out.printf("LSParser: %sn", parser.getClass().getName()); if (args.length == 0) { System.exit(0); } document doc = parser.parseURI(args[0]); LSSerializer serializer = impl.createLSSerializer(); LSOutput output = impl.createLSOutput(); output.setEncoding("UTF-8"); output.setByteStream(System.out); serializer.write(doc, output); System.out.println(); }}这是身份转换的示例:
import org.w3c.dom.document;import javax.xml.parsers.documentBuilder;import javax.xml.parsers.documentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Result;import javax.xml.transform.Source;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;public class DOMExample2 { public static void main(String[] args) throws Exception { documentBuilderFactory factory = documentBuilderFactory.newInstance(); documentBuilder parser = factory.newdocumentBuilder(); System.out.println("Parsing XML document..."); document doc; doc = parser.parse(args[0]); // Xerces Java 2 // JAXP System.out.println("JAXP: Displaying XML document..."); TransformerFactory transFactory = TransformerFactory.newInstance(); System.out.println(transFactory.getClass().getName()); //transFactory.setAttribute("indent-number", 2); Transformer idTransform = transFactory.newTransformer(); idTransform.setOutputProperty(OutputKeys.METHOD, "xml"); idTransform.setOutputProperty(OutputKeys.INDENT,"yes"); // Apache default indentation is 0 idTransform.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); Source input = new DOMSource(doc); Result output = new StreamResult(System.out); idTransform.transform(input, output); }}


