![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=1738824519-JOEYCpznljN4nzvGhdc6zHo8DjVlEZKx-0-1fa2bf76a1a3fa4994b775b5bf63ce91)
另一种方式是使用LSSerializer接口。为了获取实例,可以使用下面的魔咒:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-7-i.jpg?sign=1738824519-b09LZymAqBDEKCGsv9OPTPbrlj5GgNyI-0-eab373dc2c1c0a071256fc90998c5d7b)
如果需要空格和换行,可以设置下面的标志:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-8-i.jpg?sign=1738824519-IBrLahaFSDZYXFUk8pnvREpM3b7cZKA7-0-1c782b5980884331c27b1d0fc2b31ba7)
然后可以易如反掌地将文档转换为字符串:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-i.jpg?sign=1738824519-7CVtwBTS54TcEJ2Gax7BT9atA0J1AYPz-0-160288c0ec11daf0600d3590ea0d1afd)
如果想要将输出直接写入到文件中,则需要一个LSOutput:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-2-i.jpg?sign=1738824519-v2SsS2To3rV02E17PHOGg8jMCp4GTXTN-0-2ac1ec499eb6db017f059868a0982c2f)