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

时间:2011-05-14 16:37:46

标签: xml scala

我正在编写一个执行以下操作的小型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。我也想要那些。

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

1 个答案:

答案 0 :(得分:2)

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

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