Mas*_*iri 8 java serialization dom dtd
我有一个从头开始创建的DOM文档,我需要将它序列化为输出流.我正在使用DOM 3级序列化API,如下例所示:
OutputStream out;
Document doc;
DOMImplementationLS domImplementation =
(DOMImplementationLS) DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
LSOutput lsOutput = domImplementation.createLSOutput();
lsOutput.setByteStream(out);
lsSerializer.write(doc, lsOutput);
Run Code Online (Sandbox Code Playgroud)
我需要在结果文档中包含一个包含公共和系统标识符的DOCTYPE声明,但我无法找到生成它的方法.
我能怎么做?
McD*_*ell 13
您可以DocumentType使用DOMImplementation创建节点.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
// create doc
Document doc = docBuilder.newDocument();
DOMImplementation domImpl = doc.getImplementation();
DocumentType doctype = domImpl.createDocumentType("web-app",
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN",
"http://java.sun.com/dtd/web-app_2_3.dtd");
doc.appendChild(doctype);
doc.appendChild(doc.createElement("web-app"));
// emit
System.out.println(((DOMImplementationLS) domImpl).createLSSerializer()
.writeToString(doc));
Run Code Online (Sandbox Code Playgroud)
结果:
<?xml version="1.0" encoding="UTF-16"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9096 次 |
| 最近记录: |