![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=1738864105-6kvfZWoZf3kWEaa7cH2LskzYxv2z9N4Y-0-f829fa24529835d3b5aa3082229b5a00)
另一种方式是使用LSSerializer接口。为了获取实例,可以使用下面的魔咒:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-7-i.jpg?sign=1738864105-Okb5XM5Pgovh43MsIhSvQwDk9k2bM2rk-0-fe0ea1d3dba8fe9b2d56abe44c8d614c)
如果需要空格和换行,可以设置下面的标志:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/171-8-i.jpg?sign=1738864105-TAZN61sR6BwokSGZwjYTkPAfD13MJu8g-0-9ea390a7edf653ea901f86527b5dc48a)
然后可以易如反掌地将文档转换为字符串:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-i.jpg?sign=1738864105-DYD0DzPDI8v1UxWTNaVuNtGJOJKo5Ln9-0-a50ad41d170158495c399e307f62f67b)
如果想要将输出直接写入到文件中,则需要一个LSOutput:
![](https://epubservercos.yuewen.com/F21227/18365861501241106/epubprivate/OEBPS/Images/172-2-i.jpg?sign=1738864105-0zBe6e6pldJTaK1bsLMpL4elsCSelw7o-0-ed238c37c2276c4c350bea0f58f5e8a1)