如何在Scala中读取和输出XML处理指令?

我正在编写一个小型
Scala应用程序,它执行以下操作:

1)读取XML / XHTML文件

2)做一些小的预处理

3)如果需要,使用XSLT样式表对其进行转换.

4)稍微后处理.

5)将其保存为XHTML.

我的XML文件将从以下内容开始:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../xslt/default.xslt"?>

如果我读它们

scala.xml.XML.load(scala.xml.Source.fromFile(file))

我得到了一个Elem,但是我放弃了XML处理指令.我使用它作为String读取,执行String操作以找到xml-stylesheet,然后将其传递给

scala.xml.XML.load(scala.xml.Source.fromString(text))

必须有更好的方法来做到这一点.我需要知道我应该在Scala中使用哪个样式表,因为如果需要,Scala必须调用XSLT处理器.

此外,在我完成处理后,我使用它们保存它们

scala.xml.Utility.trim(transformed).buildString(true)

但是生成的文档不包含XML声明,也不包含HTML DOCTYPE.我也想要那些.

我知道这在技术上是两个问题,但那些基本上都是同一问题的两端,我怀疑第二个问题的解决方案与第一个问题的解决方案有关.

最佳答案 基本上,Scala的XML不足以满足您的需求.即使使用生成Document的xml.parsing.XhtmlParser,您也只能获得版本,编码和dtd.您可以创建一个构造解析器,一个事件解析器或使用自定义SAXParser覆盖XML来获取XSLT内容,但是您仍然无法使用Scala XML表示该信息,并且您仍然需要手动编写保存代码追加那些东西.

所以我建议你继续使用一个处理XSLT的Java库.

点赞