xml – 忽略Scala中的DTD规范

我想偶尔忽略dtd规范,同时使用Scala解析一个xml文件。我知道这可以很方便地通过java界面完成

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setValidating(false);
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

但是,我不知道如何使用Scala的xml库轻松实现。如果可能,我想继续使用scala xml库,因为它显着更好。

提前致谢!

最佳答案
这适用于我,但这取决于XML解析器的实现。

import scala.xml.Elem
import scala.xml.factory.XMLLoader
import javax.xml.parsers.SAXParser
object MyXML extends XMLLoader[Elem] {
  override def parser: SAXParser = {
    val f = javax.xml.parsers.SAXParserFactory.newInstance()
    f.setNamespaceAware(false)
    f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
    f.newSAXParser()
  }
}

另见this question,这是真的你的问题,但用恶意的方式写道。

转载注明原文:xml – 忽略Scala中的DTD规范 - 代码日志