![Java核心技术·卷Ⅱ:高级特性(原书第10版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/937/34339937/b_34339937.jpg)
上QQ阅读APP看书,第一时间看更新
3.7.3 写出文档
有些奇怪的是,把DOM树写出到输出流中并非一件易事。最容易的方式是使用可扩展的样式表语言转换(Extensible Stylesheet Language Transformations,XSLT)API。关于XSLT的更多信息请参见3.8节。当下,我们先考虑根据生成XML输出的“魔咒”而编写的代码。
我们把“不做任何操作”的转换应用于文档,并且捕获它的输出。为了将DOCTYPE节点纳入输出,我们还需要将SYSTEM和PUBLIC标识符设置为输出属性。
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-6-i.jpg?sign=1738906738-90ynEsEBBr5T5SELQH3eU9v4HgEeq4vt-0-103f974522bd31f3bcbeb11f6fb201d4)
另一种方式是使用LSSerializer接口。为了获取实例,可以使用下面的魔咒:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-7-i.jpg?sign=1738906738-xRcpxnGaxkYdGnKUWenZH5U05CSas8b6-0-5a0645673cc81304b8dc48b91f2bce08)
如果需要空格和换行,可以设置下面的标志:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-8-i.jpg?sign=1738906738-K2VdEB5UbyBHs4MuEXno4tNFkbbdhLkL-0-0bdd5687b5ac5507e29f13c415510d5e)
然后可以易如反掌地将文档转换为字符串:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-i.jpg?sign=1738906738-eoL9Yn46EdQrstBDbExxxSgubBSCJv6X-0-a9412f61d97eade3e1ba50b6c4a1bc1b)
如果想要将输出直接写入到文件中,则需要一个LSOutput:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-2-i.jpg?sign=1738906738-vIkhhZqvUCYPBY0TFyi52CW0RTU6pDFJ-0-62f52985b626cde6a4d23510c9a9f637)